Re: [問題] 移植到新板子
您好:
拋磚引玉一下,有錯誤請前輩指正。
: 首先我先使用 configure 先產生出 Makefile
configure通常有一個--host參數讓您指定cross compile的設定,
不過這個選項我不確定是不是每個autotools產生的套件都會有。
可以先configure --help看一下。
: 然後再去修改 Makefie 的 CC, AR, RANLIB, STRIP
這樣的方式在cross compile時很有可能會有很嚴重的後果。
就是
: bin/ld: skipping incompatible /usr/local/lib/libz.a when searching for -lz
: /opt/mips-linux-uclibc/usr/bin/../lib/gcc/mips-linux-uclib......
: bin/ld: skipping incompatible /usr/local/lib/libz.so when searching for -lz
: /opt/mips-linux-uclibc/usr/bin/../lib/gcc/mips-linux-uclib......
: bin/ld: cannot find -lz
cross-compile是要產生成非目前機器上面的binary。比如說在Intel CPU主機上面要
產生MIPS的binary。編譯並不是只有把你自己的程式碼轉成binary就收工了,還要有
其他的函式庫配合。要叫產生MIPS binary的compiler去link Intel binary是不正確
的。
cross-compile關心的是target的函式庫是否存在,也就是說在cross-compile中的libz.so
講的是MIPS binary的libz.so而不是本機上面的libz.so。
這也是為何configure時候要下--host參數,這樣autotools才會去找toolchain提供的
函式庫而不是本機上面的函式庫。如果不幸沒有--host,我會使用configure然後加入
CC, CFLAGS, LDFLAGS等變數讓autotools找到target的函式庫。
另外一點要注意的是有時候缺少的函式庫toolchain不一定會提供,這時候就要自己
porting這些函式庫,然後還要指定link路徑等。運氣不好可能會是樹狀porting。
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 218.161.96.2
※ 文章網址: http://www.ptt.cc/bbs/LinuxDev/M.1403362174.A.30E.html
→
06/21 23:26, , 1F
06/21 23:26, 1F
→
06/21 23:26, , 2F
06/21 23:26, 2F
推
06/22 22:37, , 3F
06/22 22:37, 3F
推
06/27 11:16, , 4F
06/27 11:16, 4F
LinuxDev 近期熱門文章
PTT數位生活區 即時熱門文章