10.24工作筆記——解決linux_jni編譯報錯問題

        公司在用opus開源庫,所以遇到了一些問題。

我將新下載的opus1.1替換掉老版本之後,單獨編譯opus沒問題,可是編譯相關的文件就會報錯。

錯誤信息如下:

g++ -Wall -fPIC -shared libusc_jni.o libusc.a ../api/libopus.a ../api/libspeex.a ../api/libamrnb.a ../api/libpcre.a -o libusc_jni.so -L. -lusc
/usr/bin/ld: ../api/libopus.a(celt.o): relocation R_X86_64_32S against `.rodata' can not be used when making a shared object; recompile with -fPIC
../api/libopus.a: could not read symbols: Bad value
collect2: ld 返回 1
make: *** [libusc_jni.so] 錯誤 1

好奇怪啊!搞了半天,發現是opus的問題!!我還以爲是別的文件的問題!百度原因,是因爲Makefile文件沒有兼容64導致的,可是Makefile是通過configure自動生成的啊!看了configure源碼,發現系統位數是自動檢測的。並沒有什麼參數可以進行傳遞,所以只得手動修改了Makefile。找到 CFLAGS 所在的那一行,然後在末尾加上 :

-fPIC
重新編譯,make之前記得make clean一下!問題搞定!




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