對於幫助完成整個圖片的每條信息+1。你不需要知道整個答案。我會欣賞拼圖的各個部分。謝謝。如何使用linux amd64,cmake和g ++進行linux x86交叉編譯?
我即將嘗試我的第一次交叉編譯。我搜索到了這個和網頁,發現了許多信息,但我並不總是知道如何將這些信息放在一起,因爲還有一些缺失的部分。
我的主機:linux Kubuntu amd64。
對象:Linux kubuntu x86(32bit)(應該很容易,不是?)
工具:g ++和cmake。
這裏是我找到的信息:
How to compile a 32-bit binary on a 64-bit linux machine with gcc/cmake
提到出口CFLAGS = -m32。這是一塊。
Cross-platform: selecting data types to use 32/64 bit
提及數據類型。我可能不得不在我的代碼中注意這一點。
#ifdef for 32-bit platform
的#ifdef爲32位平臺
指向以下,雖然我也不太清楚但如何使用它:
http://predef.sourceforge.net/prearch.html
http://ww.ubuntuforums.org/showthread.php?t=1377396
我:sudo易於得到安裝G ++ - multilib的
缺失的部分:
理想的情況下,當我做 '做'(用C make),它應該吐出一個amd64二進制文件和一個x86文件。我的CMakeLists.txt的
部分看起來是這樣的:
add_definitions(-Wall -pthread)
add_executable (../run.amd64 user.cpp time.cpp init.cpp utils.cpp main.cpp)
target_link_libraries(../run.amd64 cppcms dbixx config++ ctemplate)
如何引入標誌-m32創建第二個可執行文件?
我應該只想製作一個可執行文件(例如用於測試和調試),我該如何告訴cmake製作一個或兩個二進制文件?
此外,您可以看到我使用了一些第三方庫,其中一些庫需要自己編譯。這是否意味着我需要編譯目標主機的每個二進制文件?一些使用cmake和一些使用:./configure;使;
我該如何處理編譯目標主機的這些庫(使用的標誌等)?
注意:動態鏈接的庫已經編譯並安裝在目標計算機上,所以也許我不需要擔心這一步......我不確定:這是我缺少的一件...
我需要的是一種教程,或者至少是一些缺失的部分。我會更新這篇文章,詳細介紹我取得的成就和方式。
謝謝。
P.S.
有沒有可能?
搜索多了,我發現這一點:「最初的設計似乎並沒有設計任何東西比Linux或Windows的Linux的窗口交叉編譯了。」
http://www.mail-archive.com/[email protected]/msg26265.html
cmake未針對linux amd64至linux x86進行測試。
http://www.cmake.org/Wiki/CMake_Cross_Compiling#FAQ.2FPotential_Problems
「在混合32/64位Linux安裝上,交叉編譯不能用於僅爲32/64位構建。」
??
1感謝您的詳細寫了。我會研究這一切,看看我能做些什麼。 – augustin 2010-11-09 08:36:54