2013-01-09 59 views
0

我正在開發一個跨平臺的庫,並且正在嘗試在Android上進行測試。我用ndk-build編譯了我的庫,並試圖編譯和運行我們爲庫所用的命令行測試工具。Android鏈接.so用於命令行可執行文件嗎?

我用adb push把測試夾具和/data/local/tmpchmod雙方是.so 777

然後我用adb shell運行測試,但出現以下錯誤

[email protected]:/data/local/tmp $ ./mytest 
./mytest 
link_image[1936]: 7289 could not load needed library 'libtconfig.so' for './mytest' (load_library[1091]: Library 'libtconfig.so' not found)CANNOT LINK EXECUTABLE 

兩個mytest可執行文件和libtconfig.so位於相同的目錄中。我會假設它看起來像「。」目錄先?

+0

我想我可能會遇到這是http://stackoverflow.com/a/11085509/571778 – yano

回答

0

我發現我可以在路徑/data/local/tmp添加到LD_LIBRARY_PATH,它會使用腳本adb shell命令時工作,但是,每個「adb shell」是一個新的實例,所以LD_LIBRARY_PATH復位

+1

是的,這完全如預期。作爲一般的unixism,當前目錄通常不在可執行文件或庫搜索路徑中,因爲在那裏它允許某人爲其他用戶設置陷阱,將惡意代碼與系統命令/庫相同的名稱留在用戶可能訪問的目錄中。 –

相關問題