so編譯器版本
㈠ libcurl庫編譯生成不帶版本的設置方法
原文鏈接: https://blog.csdn.net/Auris/article/details/94549541
Android JNI 最近調試發現Android可以調用linux的so庫,但是Android不能直接調用so庫帶版本號的文件,類似於xxx.so.4.5.0;
xxx.so.4.5.0 的文件方式是Linux用來區分so庫文件的版本作用的,為了讓Android能夠調用so庫,需要在編譯so庫的時候,配置編譯腳本
,使其支持生成不帶版本號的so庫文件;
我們在使用libcurl庫的時候,就出現了這個問題,將libcurl編譯生成的so庫文件libcurl.so.4.5.0直接導入到Android工程中,運行提示
無法找打libcurl.so.4.5.0文件;
通過修改curl源碼文件夾下的configure文件
library_names_spec='${libname}${shared_ext}'
soname_spec=''
編譯開源項目: https://github.com/ibaoger/libcurl-android
一定要用ndk-r13b,ndk-r13b,ndk-r13b 進行編譯
㈡ 求一款能夠編輯linux系統的.so文件的工具。百度毫無信息啊
用二進制編輯器
linux用VI也可以吧
1。 vim -b your_file (-b 是二進制模式, 一定要,否則文件大小會變)
2。 然後「:%!xxd」就可以轉換為16進制,注意要編輯左邊的hex, 改寫右邊的文本沒用!和Ultraedit嚴重不同
3。 編輯好了再「:%!xxd -r」轉換迴文本模式":wq"存檔退出。
㈢ 怎樣查看.so文件由哪些.o文件鏈接而成能不能知道這些.o文件的路徑
應該看不了。靜態的庫文件是可以用ar來看的。so本身是編譯成了類似可執行的二進制的文件了,ldd也只能看編譯器版本。
㈣ Linux下怎麼獲得c庫版本怎麼動態的獲得c編譯器版本
外部調用 gcc -v 抓取最後一行吧
libc庫可以直接外部運行 /lib/libc.so.6,或者用 /usr/include/gnu/libc-version.h 里的兩個函數找
㈤ 在一個版本的linux下編譯的共享庫so文件,在其它linux版本下可以正常使用嗎
建議先核對下兩個系統的GCC版本。
㈥ linux 下如何將動態鏈接庫.so進行反編譯後,換編譯器重新編譯
程序能不能正常運行取決於程序和動態庫之間的ABI是否兼容。只要ABI兼容那麼編譯器版本就沒有影響。高版本的編譯器同樣可以使用低版本的ABI來生成目標代碼,但這個問題要具體分析。你解決問題的思路完全不對。
㈦ 求教:aix下動態鏈接庫*.so文件如何編譯出來
先檢查你的編譯器是什麼編譯器:
看是gcc還是cc,下面是cc版本的
編譯成32位版本:
cc -q32 -qmkshrobj -o XXXXXX.so XXXXXX.c
編譯成64位版本:
cc -q64 -qmkshrobj -o XXXXXX.so XXXXXX.c