因有使用需求
要在ARM 系统开发程式
目前程式是在VMware开发
使用的是zint lib
己有make 出程式 也copy 到rootfs中
但要写ARM的测试程式时出现问题
一般GCC程式开发都是 gcc -o test test.c
就好了
但因程式要在ARM系统下使用zint lib
照说明文件说的 变成 arm-linux-gcc -o test test.c -lzint
出现以下问题
arm-linux-gcc -o zint_test zint_test.c -lzint
/opt/FriendlyARM/toolschain/4.4.3/lib/gcc/arm-none-linux-gnueabi/4.4.3/../../../../arm-none-linux-gnueabi/bin/ld:
cannot find -lzint
collect2: ld returned 1 exit status
请问这个程式要如何做,才会正确组出 ARM 执行档?
作者:
askacis (ASKA)
2015-12-16 20:45:00-L告诉gcc你zint放在哪,然后把zint相关的so 放到板子上也就是你rootfs 的/lib/ 里应该就可以了
作者: yvb 2015-12-16 21:50:00
加上 -Lxxx -Wl,-rpath=xxx 其中 xxx 为 lib 档案所在路径.^^^PC端lib路径 ^^^ARM系统放置lib路径
错误讯息写的很清楚押!它需要/home/martin/new_rootfs/lib/libzint.so
有确认过 有这个档案 己解决再加入 -lz 就没错误了 感谢
作者: yvb 2015-12-17 14:47:00
-Wl,-rpath=yyy 指的是ARM系统执行程式时, lib的所在路径,所以 yyy 可能应为 /lib ; 而 /lib 为标准 lib 路径, 可省略.有的应用程式会安装lib到 /opt/xxx/lib 之类, 才需要加.
作者: yvb 2015-12-18 15:08:00
之前没细看错误/警告讯息.有那个warning表示当初libzint有-lz因此在-lzint前加上 -Wl,-rpath-link=xxx (PC端libz路径)可不用-lz;当然,-rpath-link换成-rpath,仍指向PC端路径亦可,但 zint_test 执行档内会留下 rpath 指下PC端路径的记录,用 readelf -d zint_test 会观察到.指下 -> 指向
作者:
askacis (ASKA)
2015-12-20 17:53:00你应该找gcc的书来看,以前有一本中文版