我正在嘗試交叉編譯我在Linux for Windows上編寫的一些C/C++程序。我有很多使用GCC和MSVC的經驗。庫問題和Mingw-gcc在Linux上交叉編譯Win32代碼
正常情況下,使用gcc編譯程序時,可以使用-l鏈接器參數指定要鏈接的庫。看起來,這在使用MingW-gcc鏈接器時無法正常工作。
GCC版本: i586-mingw32msvc-gcc (GCC) 4.4.4
當鏈接使用的程序(例如,GTK +或的libpng,libz進行等),使用類似:
i586-mingw32msvc-gcc -mwindows -L/opt/xcompile-win32/lib -lmylib -lmylib2 myprog.o -o myprog.exe
給出關於許多錯誤未定義的對庫函數的引用。但是,如果我指定的庫,這樣額外的對象:
i586-mingw32msvc-gcc -mwindows -L/opt/xcompile-win32/lib /opt/xcompile-win32/lib/libmylib.a /opt/xcompile-win32/lib/libmylib2.a myprog.o -o myprog.exe
一切工作正常,並將所得程序的偉大工程!我的問題是:有沒有辦法讓我的正常-l庫參數正常工作?這種方法似乎有點麻煩!我似乎無法找到任何解決此問題的在線內容。謝謝!
編輯:
澄清:對命令行庫參數的順序沒有差別。此外,該程序僅使用-l參數在Linux(gcc)上編譯得很好。實際的命令如下:
i586-mingw32msvc-gcc -mwindows -o win32/vmclient.exe win32/gtk_test.o \
-L/opt/xcompile-win32/lib -latk-1.0 -lpangoft2-1.0 -lpangocairo-1.0 \
-lgdk_pixbuf-2.0 -lm -lcairo -lpng12 -lpango-1.0 -lfreetype -lfontconfig \
-lgmodule-2.0 -lgthread-2.0 -lglib-2.0
win32/gtk_test.o:gtk_test.c:(.text+0x37): undefined reference to `_gtk_init_abi_check'
(和一堆類似的錯誤)。當以完全相同的順序直接引用.a庫文件時,該程序將編譯爲Win32(使用i586-mingw32msvc-gcc)。
謝謝,rodrigo。我想我應該提到,上面的程序在Linux上本地編譯得很好(我知道庫的訂購要求 - 我應該舉一個真實的例子)。看看修改後的問題 - 我補充了一點清晰。 – tetrisfrog