首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >到系统libltdl.so的MXE交叉编译链接以及mxe包版本

到系统libltdl.so的MXE交叉编译链接以及mxe包版本
EN

Stack Overflow用户
提问于 2017-06-07 05:26:49
回答 0查看 222关注 0票数 0

我正在尝试使用M Cross Environment从Linux为windows交叉构建一个应用程序,它实际上只是一个帮助使用Mingw-w64工具的makefile系统。应用程序的构建系统是autotools。

该项目链接到libltdt,但在程序的最终链接命令中,系统libltdt.so和交叉编译的mxe版本的libltdt

我的配置如下:

./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

我得到一个类似下面的错误

代码语言:javascript
复制
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-L条目

它还显式链接到/usr/lib/x86_64-linux-gnu/libltdl.so

但我实际上只想链接到/opt/mxe/usr/x86_64-w64-mingw32.static/lib/libltdl.a,它也在命令中指定。

如果我删除没有指向mxe工具目录的-L条目和对libltdl.so的引用,并手动运行该命令,这将成功完成,并生成可执行文件mbdyn.exe,它在windows机器上运行。

这是MXE的问题,还是我做错了什么?我怎样才能解决这个问题。

EN

回答

页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44400098

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档