奇怪的undefined reference to `mempool_free'

問題

出現以下編譯錯誤,

/media/data/lib/libbacktrace.so: undefined reference to mempool_init' /media/data/lib/libbacktrace.so: undefined reference tomempool_free’
/media/data/lib/libbacktrace.so: undefined reference to _UIarm_full_mask' /media/data//lib/libbacktrace.so: undefined reference tomempool_alloc’

原因

@bogon:/media/data/lib$ readelf -s libbacktrace.so | grep mempo
85: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND mempool_init
87: 00000000     0 NOTYPE  GLOBAL DEFAULT  UND mempool_free

184: 00000000 0 NOTYPE GLOBAL DEFAULT UND mempool_alloc
535: 00000000 0 NOTYPE GLOBAL DEFAULT UND mempool_init
537: 00000000 0 NOTYPE GLOBAL DEFAULT UND mempool_free
634: 00000000 0 NOTYPE GLOBAL DEFAULT UND mempool_alloc

@bogon:/media/data/lib$ readelf -s libunwind-arm.so | grep mempo

45: 00000000     0 FILE    LOCAL  DEFAULT  ABS mempool.c

372: 00002104 184 FUNC LOCAL DEFAULT 9 mempool_init
373: 00002278 160 FUNC LOCAL DEFAULT 9 mempool_free
401: 000021bc 188 FUNC LOCAL DEFAULT 9 mempool_alloc

注意上面的LOCAL與GLOBAL,就是通俗意義講的static和global的變量,如果要link的函數在它所在的庫裏面是LOCAL的,那就要去改他的定義,不能是static的。

參考

https://www.cnblogs.com/foohack/p/4103074.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章