2017-06-06 7 views
0

私はM Cross Environmentを使用してWindows用のLinuxからアプリケーションをクロスビルドしようとしています。これは実際にはMingw-w64ツールを使用するメイクファイルのシステムです。アプリケーションのビルドシステムはautotoolsです。システムlibltdl.soおよびmxeパッケージへのリンクをクロスコンパイル

プロジェクトlibltdtへのリンクが、プログラムの最終的なリンクコマンド、両方のシステムlibltdt.soとlibltdt

のクロスコンパイルMXEバージョンで私はこのように構成された:

./configure --host=x86_64-w64-mingw32.static CXXFLAGS="-D_P_WAIT=0 -static -static-libgcc -static-libstdc++" CFLAGS="-D_P_WAIT=0" --enable-static --disable-shared

最後のコマンドで

libtool: link: x86_64-w64-mingw32.static-g++ -D_P_WAIT=0 -static-libgcc -static-libstdc++ -pthread -pthread -Wl,--export-all-symbols -o mbdyn.exe mbdyn.o ../mbdyn/base/.libs/libbase.a -L/opt/mxe/usr/x86_64-w64-mingw32.static/lib -L/opt/mxe/usr/mingw/lib aero/.libs/libaero.a struct/.libs/libstruct.a elec/.libs/libelec.a thermo/.libs/libthermo.a hydr/.libs/libhydr.a base/.libs/libbase.a ../libraries/libmbc/.libs/libmbc_static.a -L/usr/lib/gcc/x86_64-linux-gnu/4.8 -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../x86_64-linux-gnu -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../lib -L/lib/x86_64-linux-gnu -L/lib/../lib -L/usr/lib/x86_64-linux-gnu -L/usr/lib/../lib -L/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.. -lgfortran -lquadmath /usr/lib/x86_64-linux-gnu/libltdl.so -ldl ../libraries/libmbwrap/.libs/libmbwrap.a ../libraries/libann/.libs/libmbann.a -L/opt/mxe/usr/lib/gcc/x86_64-w64-mingw32.static/5.4.0 -L/opt/mxe/usr/lib/gcc/x86_64-w64-mingw32.static/5.4.0/../../../../x86_64-w64-mingw32.static/lib/../lib -L/opt/mxe/usr/lib/gcc/x86_64-w64-mingw32.static/5.4.0/../../../../x86_64-w64-mingw32.static/lib /home/rcrozier/src/mbdyn/libraries/liby12/.libs/liby12.a /opt/mxe/usr/lib/gcc/x86_64-w64-mingw32.static/5.4.0/libgfortran.a -lmingw32 -lmoldname -lmingwex -lmsvcrt /opt/mxe/usr/lib/gcc/x86_64-w64-mingw32.static/5.4.0/libquadmath.a -ladvapi32 -lshell32 -luser32 -lkernel32 /opt/mxe/usr/x86_64-w64-mingw32.static/lib/libltdl.a -pthread -L/usr/lib/x86_64-linux-gnu -L/usr/lib/x86_64-linux-gnu 
/usr/lib/x86_64-linux-gnu/libltdl.so: error adding symbols: File in wrong format 
collect2: error: ld returned 1 exit status 
make[2]: *** [mbdyn.exe] Error 1 

の下にいくつかのがあるように、私はエラーを取得します-L/usr/lib/x86_64-linux-gnu

ようのエントリはまた/usr/lib/x86_64-linux-gnu/libltdl.so

に明示的にリンクしますが、私は実際には、コマンドで指定され、/opt/mxe/usr/x86_64-w64-mingw32.static/lib/libltdl.aにリンクします。

私はツールのディレクトリをMXEを指していない-Lエントリとlibltdl.soへの参照を削除し、手動でコマンドを実行すると、これが正常に完了するとexecuteable、mbdyn.exeは、生産、およびそれがWindowsマシン上で実行されています。

これはMXEの問題ですか、何か問題がありましたか?どうすれば問題を解決できますか?

答えて

0

何らかの理由で、この問題は私にとっては消えました。ですから、単にlibltdlのライブラリプロジェクトをMXE経由でインストールした後で再起動する必要があるかもしれません。

関連する問題