清澄 世界

關於部落格
三朵花的爸 第四朵花的他
  • 12380

    累積人氣

  • 0

    今日人氣

    0

    訂閱人氣

libreadline.so: undefined reference to `xxxxxxx'

這幾天剛拿到一包Q平台的Android BSP,於是就到server上試著是否可以完整build出images,因為這包BSP會連Host端的tools也一起建構出來,所以遇到一些之前沒發生的問題:

當整個系統跑到sqlite相關的資料夾時,build system吐出以下的錯誤訊息:
usr/lib/gcc/i386-redhat-linux/4.1.1/../../../libreadline.so: undefined reference to `PC'
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../libreadline.so: undefined reference to `tgetflag'
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../libreadline.so: undefined reference to `tgetent'
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../libreadline.so: undefined reference to `UP'
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../libreadline.so: undefined reference to `tputs'
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../libreadline.so: undefined reference to `tgoto'
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../libreadline.so: undefined reference to `tgetnum'
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../libreadline.so: undefined reference to `BC'
/usr/lib/gcc/i386-redhat-linux/4.1.1/../../../libreadline.so: undefined reference to `tgetstr'
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/sqlite3_intermediates/sqlite3] Error 1
make: *** Waiting for unfinished jobs....


在google以及同事的幫助下找到發現這個問題的解釋,原因是由於沒有鏈接 ncurses庫,只要加上 -lncurses就可以了,解法如下:

由於與readline有關係,所以用以下指令查詢相關的.mk files:
find . -name "*.mk" -exec grep -nH lreadline {} ;
找到兩個相關檔
./external/wpa_supplicant/Android.mk:553:LIBS_c += -lncurses -lreadline
./external/sqlite/dist/Android.mk:105:LOCAL_LDLIBS += -lreadline

於是,我們修改./external/sqlite/dist/Android.mk中的第105行,
LOCAL_LDLIBS += -lncurses -lreadline

再重新執行build scripts就沒問題了
相簿設定
標籤設定
相簿狀態