交叉编译:无法解析符号 'register_printf_function'
Cross compilation: can't resolve symbol 'register_printf_function'
我已经交叉编译了 strongswan-5.2.2,一个实现 VPN 服务器和客户端的开源项目,用于 embedded-linux 运行 on mipsel (target) on Ubuntu12.04 运行 在 Intel x86 机器上。
但是在mipsel机器上执行交叉编译的strongswan失败如下:
$ ./charon
./charon: can't resolve symbol 'register_printf_function'
似乎 libc.so
没有被可执行文件引用。我这样认为的原因是 register_print_function
在 libc.so
(AFAIK) 中实现。但是,libc.so
已经存在于目标 mipsel 机器的 /lib
上。
检查可执行文件引用的所有共享库显示:
$ readelf -d ./charon | grep NEEDED
0x000001 (NEEDED) Shared Library: [libm.so.0]
0x000001 (NEEDED) Shared Library: [libpthread.so.0]
0x000001 (NEEDED) Shared Library: [libdl.so.0]
0x000001 (NEEDED) Shared Library: [libgcc_s.so.1]
0x000001 (NEEDED) Shared Library: [libc.so.0]
目标机器的 /lib
上存在上述所有库..
为什么会出现该错误消息,但我在目标机器上拥有可执行文件所需的所有共享库?还有……我该如何解决这个问题?
更新:
$ nm -D libc.so.0
...
0002fb70 T register_printf_fuction
...
那个功能已经在共享库中实现了,是不是...?
我已经交叉编译了 strongswan-5.2.2,一个实现 VPN 服务器和客户端的开源项目,用于 embedded-linux 运行 on mipsel (target) on Ubuntu12.04 运行 在 Intel x86 机器上。
但是在mipsel机器上执行交叉编译的strongswan失败如下:
$ ./charon
./charon: can't resolve symbol 'register_printf_function'
似乎 libc.so
没有被可执行文件引用。我这样认为的原因是 register_print_function
在 libc.so
(AFAIK) 中实现。但是,libc.so
已经存在于目标 mipsel 机器的 /lib
上。
检查可执行文件引用的所有共享库显示:
$ readelf -d ./charon | grep NEEDED
0x000001 (NEEDED) Shared Library: [libm.so.0]
0x000001 (NEEDED) Shared Library: [libpthread.so.0]
0x000001 (NEEDED) Shared Library: [libdl.so.0]
0x000001 (NEEDED) Shared Library: [libgcc_s.so.1]
0x000001 (NEEDED) Shared Library: [libc.so.0]
目标机器的 /lib
上存在上述所有库..
为什么会出现该错误消息,但我在目标机器上拥有可执行文件所需的所有共享库?还有……我该如何解决这个问题?
更新:
$ nm -D libc.so.0
...
0002fb70 T register_printf_fuction
...
那个功能已经在共享库中实现了,是不是...?