0
如果我有一個基於Windows編譯器的dll和.lib,我可以將它們與我用cygwin g ++編譯的應用程序鏈接嗎?如果沒有,它會與Linux g ++庫構建?使用Windows編譯器之間的編譯庫編譯器,cygwin和linux g ++
是從Windows編譯器生成的庫,cygwin g ++和linux g ++可交叉鏈接?
如果我有一個基於Windows編譯器的dll和.lib,我可以將它們與我用cygwin g ++編譯的應用程序鏈接嗎?如果沒有,它會與Linux g ++庫構建?使用Windows編譯器之間的編譯庫編譯器,cygwin和linux g ++
是從Windows編譯器生成的庫,cygwin g ++和linux g ++可交叉鏈接?
不,沒有。庫和可執行文件特定於操作系統和處理器。你可以考慮移植的唯一東西是源代碼,如果它寫得非常謹慎。一些庫(例如QtCore,Gtk/Glib,...)抽象了一個平臺併爲您提供了一個通用的API(可在許多操作系統上使用),但是您仍然需要爲每個系統編譯。
您可以將虛擬機作爲目標(例如通過Java,Lua字節碼或Ocaml字節碼...)來獲得額外的可移植性(以虛擬機實施的成本爲代價)。您也可以將軟件編碼爲腳本(例如使用Python)。
我想使用一個外部庫,它們提供了庫的windows構建和linux版本。所以只有當他們提供cygwin構建時,我才能夠使用它們的lib來達到我的目的? –
不,庫的編譯形式是操作系統和機器特定的。你必須爲Windows和Linux提供獨立的版本(甚至是針對Linux x86,Linux x86-64,Linux ARM的獨立版本)。 –
您需要cygwin構建庫(或從源代碼自己構建庫)以在cygwin下使用該庫。 –