2010-03-29 110 views
3

我試圖在32位ubuntu系統上交叉編譯64位可執行文件。這可以工作直到鏈接,由於缺乏64位glib2(libglib-2.0.a)而失敗。在32位系統上安裝64位glib2進行交叉編譯

如果我是在64位系統上執行此操作,我將使用getlibs將32位glib2安裝到/ usr/lib32中。但是,在32位機器上,getlibs似乎並沒有做相反的事情 - 將64位glib2安裝到/ usr/lib64中。

我的問題是:如何手動執行getlibs應該做的事情,即將64位glib2安裝到/ usr/lib64中?

回答

0

有幾種方法可以解決這個問題。最直接的方法是下載一個工具鏈,它附帶你需要的目標庫。鑑於這很可能不會發生,下面是解決此問題的一種方法。

我打算假設您使用gcc作爲您的交叉編譯器。

  1. 複製了所有的圖書館,你需要形成目標系統到某個文件夾
  2. 在你的Makefile(或命令行)設置CFLAGS(和CXXFLAGS如果C++)於以下內容:

    -L /路徑/到/目標/庫-Wl,-rpath鏈接/相同/路徑/爲/第一

注意輪候冊,並-rpath鏈接沒有空間兩者之間對他們來說,它必須是這樣的。

-L增加了編譯器查看的庫路徑。第二個參數-WL,-rpath-link爲鏈接器添加路徑。你必須擁有兩者,否則編譯器會解析這些符號,但是鏈接器會抱怨它沒有鏈接庫的庫。