我正在尝试使用 Mingw-w64 的 32 位编译器(i686-w64-mingw32
工具链)来交叉编译 Windows 的 ICU 库。主机是 Ubuntu 12.10 64 位。
我采取的步骤如下所示:
从这里获取最新的源代码存档并提取它。
制作两份
source/
目录副本 - 一份用于主机,一份用于目标。对于主机构建:
。/配置 ; 制作
对于目标构建:
./configure --host=i686-w64-mingw32 --with-cross-build= <host_source_dir>
...
<host_source_dir>
上一步的目录在哪里。当我
make
在目标源目录中运行时,编译会继续进行几分钟而没有任何错误,然后抛出此错误:i686-w64-mingw32-g++ -O2 -W -Wall -pedantic -Wpointer-arith -Wwrite-strings -Wno-long-long -mthreads -o ../../bin/uconv.exe uconv.o uwmsg.o -L../../lib -licuin50 -L../../lib -licuuc50 -L../../stubdata -licudt50 -lm uconvmsg/uconvmsg.a uconv.o:uconv.cpp:(.text+0x2f): 未定义引用`_uconvmsg_dat'
什么可能导致此错误?我备份了几行,也注意到了这一点:
pkgdata:i686-w64-mingw32-gcc -O2 -Wall -std=c99 -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -mthreads -shared -Wl,-Bsymbolic -Wl,--enable-auto-import -Wl,--out-implib=./all.lib -o ../lib/icudt50.dll ./out/tmp/icudt50l_dat.o 无法导出 icudt50_dat:找不到符号 collect2: ld 返回 1 个退出状态 -- 返回状态 = 256 生成库文件时出错。失败的命令:i686-w64-mingw32-gcc -O2 -Wall -std=c99 -pedantic -Wshadow -Wpointer-arith -Wmissing-prototypes -Wwrite-strings -mthreads -shared -Wl,-Bsymbolic -Wl,--enable-auto-import -Wl,--out-implib=./all.lib -o ../lib/icudt50.dll ./out/tmp/icudt50l_dat.o 为数据生成汇编代码时出错。
我究竟做错了什么?