linux跨平台
① linux系統下 php跨平台連接sqlserver資料庫獲取數據
你可以在你php的server裡面嘗試用shell遠程連接你的SQLserver。一般這些是兩個問題,要麼是你遠程SQLserver沒有開埠,所有不能訪問你SQLserver,或者是你mysql沒有開啟遠程連接。
② linux遠程連接軟體有哪些
您好,命令遠程連接工具:Xshell、SecureCRT、Putty、SSH Secure Shell Client等
圖形遠程連接工具:xmanager(需安裝配置服務並打開177埠)、VNC-Viewer(linux需安裝vncserver)、windows自帶的遠程桌面(linux需安裝xrdp和vnc)
如果有什麼不懂的話可以去看看《Linux就該這么學》這本書,非常適合新手學習Linux。
③ 如何在Windows和Linux上進行跨平台P/Invoke
NET的程序是和Java一樣的託管代碼,在底層操作上,具有很大的局限性,像Java的JNI一樣,.NET具有Platform Invoke(平台調用,通常叫P/Invoke)。本文中,Linux下的.NET託管代碼運行在Mono CLR上。之所以做跨平台的P/Invoke,是因為考慮到有些客戶在Win32/WinCE等系統中開發的.NET程序,需要換到Linux平台運行。嵌入式開發中,經常需要操作IO,.NET程序就通過P/Invoke來調用一些用比如c/c++一類語言開發的native代碼完成IO操作。這時候針對windows編寫的native代碼,就不能不加修改的移植到Linux上,要完成這個移植工作就需要編寫Linux下的native代碼。但如何做到不修改.NET程序呢,下面就讓筆者以實例講述。
要保證.NET程序不加修改,不許重新編譯,需要做到native代碼具有一致的介面。比如我們有native.dll何libnative.so兩個不同系統下的動態鏈接庫,在.NET程序中,調用動態庫中的getSum(int a,int b)函數,則需要在native.dll和libnative.so中都存在getSum(int a, int b)函數,而且導出的名字要一致,都是getSum。編譯時要注意編譯器對符號名稱的修飾,vc編譯器中,可以用Mole-Defination File(.def)文件來規范到處的函數名稱。
在.NET的代碼中,透過DllImport引入外部函數時,指定的鏈接庫模塊不要加擴展名。比如native.dll,只要寫native就好。windows中,會自動尋找native.dll,Linux下對應的是libnative.so。
以下是實例代碼:
using System;
using System.Runtime.InteropServices;
namespace Managed
{
class Program
{
[DllImport("native")]
public static extern int getSum(int a, intb);
static void Main(string[] args)
{
System.Console.WriteLine("Managed code out.");
System.Console.WriteLine("1+2=" + getSum(1, 2));
}
}
}
上邊的代碼演示了從外部動態鏈接庫引入函數的方式,注意沒有加擴展名。接下來在看看windows下的c代碼是如何編寫的:
/**
* native.h 頭文件,聲明函數原型
*/
#ifndef NATIVE_H
#define NATIVE_H
#ifdef __cplusplus
extern "C" {
#endif
int __stdcall getSum(const int a, const intb); // 原型
#ifdef __cplusplus
}
#endif
#endif
/*
* native.cpp
* 2013-03-05 實現功能的代碼
*/
#include "native.h"
#include <stdio.h>
int __stdcall getSum(const int a, const intb)
{
printf("WindowsNative code.\n");
returna+b;
}
以上是具體的代碼,另外需要模塊定義文件(.def)來指定導出的函數表。如下:
LIBRARY "native"
EXPORTS
getSum
在VC中,編譯,以上代碼,可以生成dll文件。用mpbin工具可以看到導出的函數名為getSum。
Linux下的共享庫(Shared Object,簡稱so)的實現比上邊更簡單,編譯時gcc加上-shared參數即可,這方面網上很多。我直接採用了code block的IDE,建立shared library工程。編譯時IDE就會把這些處理好。編寫的代碼如下:
#include <stdio.h>
int getSum(int a, int b)
{
printf("Linux Natie code\n");
return a+b;
}
編譯生成libnative.so。
我們在native的代碼中插入了輸出語句,用來顯示調用了哪個庫。將這些native.dll, libnative.so, 還有C#程序managed.exe拷貝到一個文件夾,在Windows上運行managed.exe結果如下:
可以看出,在Windows和Linux下的P/Invoke調用都很成功。差不多到這里就該結束了,但是還有一點需要提醒,不論哪個平台,如果提示找不到庫的問題,請將庫放在一個程序能夠找到的地方。
以上只是簡單的演示了P/Invoke,實際上更復雜的情況,我們可以在.NET程序中,判斷當前運行的操作系統,然後採用LoadLibrary或者dlopen等,動態載入共享庫,這樣更靈活,不再有上邊提到的「不加擴展名」,路徑找不到的要求或者問題。感興趣的讀者可以自行了解這方面的內容。
④ 如何在 Linux 上使用 BackupPC 來架設跨平台的備份伺服器
首先要做的事情就是將 CentOS testing 軟體庫連同 yum-priorities 插件一並安裝
# cd /etc/yum.repos.d
# wget http://dev.centos.org/centos/5/CentOS-Testing.repo # yum install yum-priorities
yum --enablerepo=c5-testing install backuppc httpd mod_perl
設置 Apache
如上述所提及,假若要一切正常地與 CGI 及 mod_perl 運作,Apache 的執行身份必須是安裝 RPM 時在系統上所創建的 BackupPC 用戶。請你現在就把合適的值設於 httpd.conf 內。
# vim /etc/httpd/conf/httpd.conf ## 更改 User apache 為 User backuppc User backuppc Servername backuppc.domain.com:80
存儲並離開文件,然後更改被創建於 conf.d 目錄下的 backuppc.conf 文件。
# vim /etc/httpd/conf.d/backuppc.conf ## 將 Allow from 127.0.0.1 改為 all Allow from all
存儲並離開這個文件,然後創建你將會用來訪問網頁界面的用戶及密碼。# htpasswd -c /var/lib/backuppc/passwd/htpasswd your_user //看主配置文件來設置密碼。 New password: your_password Re-type new password: your_password Adding password for user your_user
# service httpd start # chkconfig httpd onBackupPC 伺服器設置初次設置時,你必須在命令行上編輯數個參數,額外的你可以通過命令行或網頁界面來完成。請打開 BackupPC 的主要配置文件,然後設置下列參數。TopDir 這個路徑就是放置實際備份的地地。它的預設值是 /var/lib/backuppc。我利用一個加密的分區來作備份,因此我的路徑是 /srv/backuppc。請按你的需要修改它。 # vim /etc/BackupPC/config.pl ## BackupPC 預設的傳輸方法。 $Conf{XferMethod} = 'rsync'; ## 備份數據存放位置的路徑。 $Conf{TopDir} = '/var/lib/backuppc'; ## init.d 內用來引導伺服器的路徑。 $Conf{ServerInitdPath} = '/etc/init.d/backuppc'; $Conf{ServerInitdStartCmd} = '$sshPath -q -x -l root $serverHost$serverInitdPath start'; ## 你以 htpasswd 創建獲授權的用戶。 $Conf{CgiAdminUsers} = 'your_user';設置 BackupPC Sudobackuppc 這位用戶須要擁有 sudo 許可權來執行 gtar 及 tar 的指令。否則,BackupPC 便不能正確地運作。Sudo 應該已被安裝在你的系統上,因此你可以通過 visudo 這個指令來作出所需的修改。# visudo ## 注釋掉 Defaults requiretty ## 加入以下兩行。 Defaults !lecture backuppc ALL=NOPASSWD:/bin/gtar,/bin/tar存儲並離開這個文件,然後重新引導 Apache,引導 BackupPC 並設置它在開機時引導。# service httpd restart # service backuppc start # chkconfig backuppc on
ackupPC SSH 金鑰由於我們會專注以 rsync 進行備份,你也許會想為 backuppc 進程創建無須密碼的金鑰,讓它能遠程連接到需要備份的主機上。請以 root 的身份在 /var/lib/backuppc 內置立隱藏的 SSH 目錄,繼而修改許可權。# cd /var/lib/backuppc # mkdir .ssh # chown backuppc.backuppc .ssh # chmod 700 .ssh接著,請改為 backuppc 這個用戶。你須要指定一個指令殼,因為 backuppc 這位用戶預設是沒有指令殼的。然後請利用 ssh-keygen 創建沒有密碼的 SSH 金鑰。# su -s /bin/bash backuppc bash-3.2$ ssh-keygen -t dsa Generating public/private dsa key pair. Enter file in which to save the key (/var/lib/backuppc/.ssh/id_dsa): Enter passphrase (empty for no passphrase): Enter same passphrase again: Your identification has been saved in /var/lib/backuppc/.ssh/id_dsa. Your public key has been saved in /var/lib/backuppc/.ssh/id_dsa.pub. The key fingerprint is: xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx:xx [email protected]
復制伺服器金鑰到客戶端
你必須將你伺服器上創建的金鑰復制到每一台要被備份的客戶端里。就此,請繼續上一步,在伺服器上以 backuppc 這個用戶的身份執行 ssh--id 這個指令。
bash-3.2$ ssh--id -i .ssh/id_dsa.pub root@host_to_backup
它應該會將金鑰復制到主機里,並通過 SSH 把你登錄該台機器。
⑤ linux比windows的優勢
Linux相信大家並不會陌生,Android(安卓或安致)就是基於Linux平台的開源手機操作系統,在電腦方面有ubuntu(中文名:烏班圖)等等也是基於linux。
Windows與Linux
Windows與Linux
Linux,這個號稱「全地球人的操作系統」,以其免費、安全、穩定等優點獲得人們的廣泛好評!下面yarn就列出幾點linux相對於Windows的優勢。
合法升級到最新版本卻不需要花一分錢。(windows或者apple合法升級是需要掏錢的,windows與Linux比較差別大吧!)
同一個硬體平台上最新的操作系統卻比老的更快。(如果在一硬體平台上運行xp比較卡的話,那運行windows7是不可能的,而linux卻相反,Linux與windows相比大大不同)
如果你不喜歡默認的桌面環境,可以非常容易的自行安裝其他的界面。(比如你在linux安裝了gnome和kde程序,那麼切換時只需要輸入:switchdesk gnome就能切換到gnome桌面環境了,輸入switchdesk kde就能切換到kde桌面環境了;當然,現在windows下也能體驗kde程序,不過首先需要安裝kde installer【kde安裝程序】,而且基於windows的kde程序現在好像還處於alpha【內部測試】階段)
一個命令就可以安裝二十個程序。windows與Linux有得比嗎?
讓系統自動為用戶所安裝的軟體更新。
可以在N台機器上安裝同一份OS(意為操作系統)拷貝而無須擔心協議限制或激活碼。
可以自由分發該操作系統及其他運行其上的軟體而不會違犯法律,政治或倫理道德,因為它本身就提倡這么做的。
可以裸奔(無需殺毒軟體,反廣告/間諜防護軟體),甚至可以數月不用重啟機器,因為它具有獨特的內存管理方式。(大家可以想一下如果windows下裸奔會是怎樣的後果;windows如果很長一段時間不關機或是重啟,那麼它運行肯定不會有剛開機時那麼流暢),所以說安全上Linux與windows比較沒意思。
從來不用磁碟碎片整理。
嘗試軟體,覺得不喜歡,就刪掉他,而且知道他不會在什麼注冊表裡留下一些垃圾可能導致把我的系統搞慢。而比較的windows呢?時間長了得重裝系統!
犯了重大錯誤而導致全新重裝系統,也不過花去了1小時不到的時間,因為我把我的數據放在了獨立於操作系統和程序的分區。
在一台3歲的老電腦上可以有如win7那樣超酷的登錄效果…少於40秒,這已經是將我輸入用戶名和密碼並登錄計算在內了。(yarn的系統開機只需要10秒到20秒,這一點windows8與Linux有得比較。可畢竟還沒正式發行)
合法自定義任何我想要的東西,包括我最喜愛的程序。我甚至可以跟蹤軟體開發者並向他們問問題,提意見,如果我願意的話,也可以參與到真正的軟體設計和開發進程中去。而相比的windows可能告你侵權。
超過4個的文字處理窗口,聽音樂,玩超酷的桌面效果,聯系一個大型的社區,並同時運行著firefox(火狐瀏覽器),即時通訊以及email客戶端,而不必求爺爺告奶奶的要什麼令我的系統可以運作的代碼,而不會把系統變慢。
使用」dpkg –get-selections > pkg.list」命令來獲得一個完整詳盡的已裝軟體列表,備份我的/etc和/home文件夾到一個獨立分區,然後你就可以隨時恢復你的系統了,而且超簡單。
同時運行多個桌面,甚至可以讓多用戶同時登錄並使用該機器。
無損調整分區大小而不用擔心會丟失數據。(現在windows7也自帶這個功能,windows其他版本必須藉助第三方軟體才能做到)
硬體可以使用超過五年而無須更換
可以在OS(意為操作系統)安裝的同時瀏覽網頁!(windows下這是不可能的)
使用幾乎所有的硬體,因為系統已經自帶了驅動。
⑥ linux為何可以支持這么多平台
一個一個的來回答你的問題吧。
1,不能說GCC一點都沒有貢獻,但LINUX的可移植可不是GCC就能解決的了的問題。
2,特殊的CPU,毋庸置疑linux代碼一定要改。
3,這個問題很怪,只要遵循C語法,GCC當然可以編譯,但我上面說過了,光靠GCC不能解決問題。
4,linux強大的移植性最重要的原因是因為它已經為每一個CPU都實現了代碼,你可以在他的源代碼包下找到很多以硬體名字命名的文件夾,這才是LINUX可移植的重要原因。
5,GCC是C編譯器,所謂的C語言有移植性,比如說網路編程上的SOCKET這個概念,在每個操作系統都是有實現的,linux或者windows,作為C的庫函數,他把這2種實現都包容進來,再給你一個統一的介面,然後,當你把代碼放到linux下編譯時,他就會編譯成linux下的支持,到windows下就成另一種,從而實現了跨平台。
6,究竟是先有誰,這個沒有可比性。
7.完全沒有可比性。
從你的問題看出,你還需要繼續學習。你再繼續學習就能明白可移植到底是如何實現的。2種方式:針對不同的東西我給出不同的實現,新加一種我就多一種實現這樣可以達到可移植。例如linux。2,在出現之前我就給出標准,大家都遵守標准程序就可以移植,比如POSIX可移植操作系統標准。
⑦ 跨平台組態軟體有哪些支持Linux的
紫金橋跨平台組態呀(手動滑稽)
視頻鏈接網頁鏈接
⑧ linux跨平台嗎
Linux和Android都是平台,不存在跨平台一說,其次Android的app能運行在各種硬體設備上,是因為app不是直接調用Android系統的api,而是運行在虛擬機上的
⑨ linux系統好用嗎
當然,Linux是非常好用的操作系統,具備免費、開源、跨平台、良好的界面等特性。
1、易於使用。Linux幾乎具備Windows的功能,具有良好的圖形用戶界面(GUI),能滿足大多數用戶的需求。
2、易於維護。Linux系統非常容易維護,每個發行版都有自己的軟體管理中心,提供定時更新,即安全又高效。
3、高安全性、高可用性。Linux非常安全穩定,不易崩潰,除非用戶以root身份登錄,否則程序無法更改系統設置和配置。
4、可在任何硬體上運行。Linux能有效利用系統資源,用戶可自行選擇需要安裝的模塊,能夠最佳地使用所有硬體資源。
5、免費開源。Linux完全免費且擁有強大的免費軟體群,企業可以免費使用軟體,大大降低了成本預算。
⑩ 據說linux可以不裝驅動,那可以直接跨平台嗎
Linux不是不用驅動,而是很多驅動都在裡面了。當然,遷移一套Linux系統確實比Windows容易很多。但是容易也不是就是不出問題,第一個驅動問題,碰上了不認識的硬體你一點辦法都沒有。
第二,會把新機器的網卡,其它硬碟或其他設備認成新設備,從而導致命名混亂,詳細請參見udev如果你需要在不同的硬體環境下運行同一套Linux系統,不妨考慮一下knoppix,這套系統就是為這種需要而生的。