[問題] 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