1. C/C++源文件直接交叉編譯生成.so文件供安卓應用程序調用,可以嗎
Jni調用就行了,是要按規則寫介面api,如果介面很多,也沒法,那是你的業務問題,要重新設計業務邏輯。我們之前用的c++單獨交叉編譯一個進程,和安卓界面用tcp通信,如果介面多也以為著協議多,一樣的。
2. 但是生成了libxxx.so文件,這個動態庫不能被別人調用嗎
可以被別人使用啊。你只需要在編譯的時候,鏈接這個動態庫就能被使用了。
3. 編譯出來的so庫文件怎麼在JAVA中調用
用 sudo find / -name jni.h -print
命令,就會打出路徑
4. linux下如何用c++編譯so文件,c語言又怎樣調用這個so文件
根據相應的頭文件、和鏈接使用的庫文件,編譯鏈接後,即是可以使用該.so文件了
~~~~~~~
5. ndk編譯so庫能調用linux下編譯出的arm靜態庫嗎
先區分清楚host和target的區別。 Linux和Windows是你的host platform。 Android是target platform。 編譯Android library使用cross-compilation (交叉編譯),即在某個host平台下編譯針對某個特定的target平台的體系結構的代碼。
6. linux下c語言編譯so問題
不需要在自己的.so中調用別人的.so,只需要編譯自己的,編譯.so時,系統不會檢查未定義的函數。
直接在編譯自己的應用程序時鏈接這兩個.so就可以了!
gcc
-o
exec_file
mysrc.c
-L./
-lXXX
-L/usr/lib
-lmysqlclient
7. 添加.so文件後,還是不能使用怎麼辦
個目錄。安全的做法是編譯庫C代碼時,Application.mk中打開,
APP_ABI := armeabi armeabi-v7a
編譯生成的兩份so文件各自放到項目工程的armeabi/armeabi-v7a目錄中。有時還需要針對v7a平台編譯支持NEON和不支持NEON的庫。譬如這個例子,
in armeabi/: libp.so, libd.so, libvh.so, libvn.so
in armeabi-v7a/: libp.so, libd.so, libd_neon.so, libvh.so, libvn.so
需要注意這一點:The 'armeabi-v7a' machine code will not run on ARMv5 or ARMv6 based devices. 如果損失一些應用的性能是可以接受的,不希望保留庫的兩份拷貝,可以移除armeabi-v7a目錄和其下的庫文件,只保留armeabi目錄。在安裝應用時,行為是這樣的,
When installing an application, the package manager service will scan
8. linux驅動能不能編譯成so,供應用程序使用
不能。
最終應用程序使用的是一個設備文件,而要產生這個設備文件,那麼是編譯進內核里,要麼是編成模塊的ko文件,生成了設備文件,在dev目錄下能看到這個設備文件才可供應用程序調用。
希望我的回答能幫助到你。