我正在尝试在 Linux 构建主机上使用 mingw32 交叉编译 Xalan for Windows。大约一年前,我在 Debian Lenny 上做到了这一点,没有太多麻烦(只是对 Makefile 和 MsgCreator 的本机副本进行了细微调整),但尝试在 Squeeze 上做到这一点变得有点困难。
失败的命令是
i586-mingw32msvc-dllwrap --export-all-symbols --driver-name \
i586-mingw32msvc-g++ -mthreads -Wl,--allow-multiple-definition \
../../../../obj/XalanMsgLib.o -o ../../../../lib/libxalanMsg1_11_0.dll
这是来自库存 Makefile 的命令,为我的系统更正了 dllwrap 命令和驱动程序名称(Debian Squeeze,从官方存储库安装的 mingw32 软件包)
产生的错误是
../../../../obj/XalanMsgLib.o: In function `_ZN11xalanc_1_1117XalanMsgContainer10getMessageEj':
XalanMsgLib.cpp:(.text+0x18): undefined reference to `_GLOBAL_OFFSET_TABLE_'
../../../../obj/XalanMsgLib.o:
.data.DW.ref.__gxx_personality_v0[DW.ref.__gxx_personality_v0]+0x0):
undefined reference to `__gxx_personality_v0'
collect2: ld returned 1 exit status
i586-mingw32msvc-dllwrap: i586-mingw32msvc-g++ exited with status 1
根据此处和 Google 上的建议,我验证了(据我所知)g++ 被用于链接,并且 libstdc++ 被链接到(-lstdc++ 在 LDFLAGS 中,我还在上面的命令)。
我尝试了其他一些方法,但到目前为止没有任何效果,而且我的想法已经不多了。
是什么导致了这个错误,我该如何解决?