2014-10-16 48 views
0

我試圖學習JNI,但每次我嘗試運行java程序時,它都會拋出一個異常,聲明它無法在啓動時聲明的lib路徑中找到* .so庫 - 這應該會發生。我的印象是,它不應該,但後來我意識到,我從來沒有做過這樣的文件,事實上我正在嘗試加載一個可執行文件(Ubuntu沒有明確的文件擴展名)。使用代碼塊創建共享對象?

不管怎樣,我怎樣才能使用代碼塊將我的cpp文件編譯成.so文件。我一直在尋找所有我發現的是複雜的gcc命令,我不太明白。

任何有關如何從代碼塊創建共享對象庫的見解將是一個很大的幫助。

回答

1

您可以創建類的對象(.o)文件,然後使用-shared標記將它們組合成一個動態鏈接的庫。
以我的經驗,代碼塊並沒有爲用戶提供這樣的能力。你將不得不使用gcc。

+0

我剛剛嘗試了gcc共享命令:gcc -shared -o hello.so hello.o 它給出了一個錯誤,但我發現CodeBlocks允許您創建共享庫。我會繼續嘗試這些gcc命令。謝謝回覆! – user3530525 2014-10-16 17:40:52

+0

我對此不太確定,但試試gcc -shared -o libhello.so hello.o並讓我知道它返回的結果。 – user2504710 2014-10-16 17:45:33

+0

返回: /usr/bin/ld:hello.o:重定位在創建共享對象時,無法使用針對'.rodata'的R_X86_64_32;使用-fPIC重新編譯 hello.o:錯誤添加符號:錯誤值 collect2:錯誤:ld返回1退出狀態 – user3530525 2014-10-16 17:46:58