[问题] arm gcc 应用程式 组译问题

楼主: liang168 (小强)   2015-12-16 19:43:13
因有使用需求
要在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路径
作者: leolarrel (真.粽子无双)   2015-12-17 10:40:00
错误讯息写的很清楚押!它需要/home/martin/new_rootfs/lib/libzint.so
楼主: liang168 (小强)   2015-12-17 11:03:00
两个lib都在同个目录下 不是很明白警告原因
作者: leolarrel (真.粽子无双)   2015-12-17 13:45:00
有libz.so.1 这个档案吗?
楼主: liang168 (小强)   2015-12-17 14:15:00
有确认过 有这个档案 己解决再加入 -lz 就没错误了 感谢
作者: yvb   2015-12-17 14:47:00
-Wl,-rpath=yyy 指的是ARM系统执行程式时, lib的所在路径,所以 yyy 可能应为 /lib ; 而 /lib 为标准 lib 路径, 可省略.有的应用程式会安装lib到 /opt/xxx/lib 之类, 才需要加.
作者: leolarrel (真.粽子无双)   2015-12-17 16:36:00
没发现要加-lz ,我的错
作者: 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 会观察到.指下 -> 指向
楼主: liang168 (小强)   2015-12-18 18:41:00
感谢 再研究这些参数
作者: askacis (ASKA)   2015-12-20 17:53:00
你应该找gcc的书来看,以前有一本中文版

Links booklink

Contact Us: admin [ a t ] ucptt.com