Re: [問題] 移植到新板子

看板LinuxDev作者 (qqq)時間10年前 (2014/06/21 22:49), 編輯推噓2(202)
留言4則, 3人參與, 最新討論串1/1
您好: 拋磚引玉一下,有錯誤請前輩指正。 : 首先我先使用 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
在 configure.ac 中如果有 AC_CANONICAL_HOST 和
06/21 23:26, 1F

06/21 23:26, , 2F
AC_CANONICAL_BUILD 就會有 --host 和 --build
06/21 23:26, 2F

06/22 22:37, , 3F
感謝大大的詳細講解..我太弱了 我加上 -host就過了 感謝
06/22 22:37, 3F

06/27 11:16, , 4F
推~
06/27 11:16, 4F
文章代碼(AID): #1JfPj-CE (LinuxDev)