導航:首頁 > 操作系統 > linuxso路徑

linuxso路徑

發布時間:2022-08-29 02:34:51

1. linux編譯openssl後的.so文件被放在哪個目錄下邊了具體是哪個目錄啊

不進行make install安裝的話,就在你openssl的源碼目錄里,當然你config的時候需要指明shared,否則只有.a的,沒有.so的。
如果config的時候,指定了prefix,那麼就到你指定的目錄去找,下面應該有個lib目錄。
如果你的linux自帶openssl的話,系統的lib目錄下就有。libcrypto和libssl

2. linux下ld連接SO文件時如何制定絕對路徑

連接器使用下面的搜索路徑來定位需要的共享庫: 1. 所有由"-rpath-link"選項指定的搜索路徑. 2. 所有由"-rpath"指定的搜索路徑. 「-rpath"跟"-rpath_link"的不同之處在於,由"-rpath"指定的路徑被包含在可執行文件中,並在運行時使用, 而"-rpath-link"選項僅僅在連接時起作用. 它只用於本地連接器. 3. 在一個ELF系統中, 如果"-rpath"和"rpath-link"選項沒有被使用, 會搜索環境變數"LD_RUN_PATH"的內容.它也只對本地連接器起作用. 4. 在SunOS上, 「-rpath"選項不使用, 只搜索所有由"-L"指定的目錄. 5. 對於一個本地連接器,環境變數"LD_LIBRARY_PATH"的內容被搜索. 6. 對於一個本地ELF連接器,共享庫中的`DT_RUNPATH"和`DT_RPATH"操作符會被需要它的共享庫搜索. 如果"DT_RUNPATH"存在了, 那"DT_RPATH"就會被忽略. 7. 預設目錄, 常規的,如"/lib"和"/usr/lib". 8. 對於ELF系統上的本地連接器, 如果文件"/etc/ld.so.conf"存在, 這個文件中有的目錄會被搜索.
如上所述,可以用"-rpath-link","-rpath",或者文件"/etc/ld.so.conf"來指定。

3. linux的動態庫.so文件放下哪裡

這個一般沒有要求。一般/lib /usr/lib
其它的要看具體情況。。。
如果你是自己編譯的應用程序,.so文件一般就在安裝目錄下的lib目錄中。

4. java jnative 調用 dll,在Linux環境下用的是.so文件,請問.so文件應該放在什麼路徑下 高分!急!

在/usr/lib下面就可以

一般就幾個目錄 /lib /usr/lib /usr/local/lib


在/etc/env.d/目錄下有文件定義這些搜索庫的路徑

比如 00basic 中就有這么一句

LDPATH='/lib64:/usr/lib64:/usr/local/lib64:/lib32:/usr/lib32:/usr/local/lib32:/lib:/usr/lib:/usr/local/lib'

當然我用的版本是gentoo,是這樣,大多數應該一樣吧


你也可以放到自己的文件夾里,然後把文件夾名加到env.d下的文件里去

5. linux可執行程序調用.so怎麼獲取so的路徑

/etc/ld.so.conf里定義so文件路徑即可,可執行程序會自動到裡面定義的路徑里去找。

6. linux環境java如何調用so文件

用JNI實現
實例:

創建HelloWorld.java
class HelloWorld
{
private native void print();
public staticvoid main(String[] args)
{
new HelloWorld().print();
}

static
{
System.loadLibrary("HelloWorld");
}
}
注意print方法的聲明,關鍵字native表明該方法是一個原生代碼實現的。另外注意static代碼段的System.loadLibrary調用,這段代碼表示在程序載入的時候,自動載入libHelloWorld.so庫。
編譯HelloWorld.java
命令行中運行如下命令:
javac HelloWorld.java
在當前文件夾編譯生成HelloWorld.class。
生成HelloWorld.h
在命令行中運行如下命令:
javah -jni HelloWorld
在當前文件夾中會生成HelloWorld.h。打開HelloWorld.h將會發現如下代碼:
/* DO NOT EDIT THIS FILE - it is machine generated */
#include <jni.h>
/* Header for class HelloWorld */

#ifndef _Included_HelloWorld
#define _Included_HelloWorld
#ifdef __cplusplus
extern "C" {
#endif
/*
* Class: HelloWorld
* Method: print
* Signature: ()V
*/
JNIEXPORT void JNICALL Java_HelloWorld_print
(JNIEnv *, jobject);

#ifdef __cplusplus
}
#endif
#endif
該文件中包含了一個函數Java_HelloWorld_print的聲明。這裡麵包含兩個參數,非常重要,後面講實現的時候會講到。
實現HelloWorld.c
創建HelloWorld.c文件輸入如下的代碼:
#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"

JNIEXPORT void JNICALL

Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
printf("Hello World!\n");
}
注意必須要包含jni.h頭文件,該文件中定義了JNI用到的各種類型,宏定義等。
另外需要注意Java_HelloWorld_print的兩個參數,本例比較簡單,不需要用到這兩個參數。但是這兩個參數在JNI中非常重要。
env代表java虛擬機環境,Java傳過來的參數和c有很大的不同,需要調用JVM提供的介面來轉換成C類型的,就是通過調用env方法來完成轉換的。
obj代表調用的對象,相當於c++的this。當c函數需要改變調用對象成員變數時,可以通過操作這個對象來完成。
編譯生成libHelloWorld.so
在Linux下執行如下命令來完成編譯工作:
cc -I/usr/lib/jvm/java-6-sun/include/linux/
-I/usr/lib/jvm/java-6-sun/include/
-fPIC -shared -o libHelloWorld.so HelloWorld.c
在當前目錄生成libHelloWorld.so。注意一定需要包含Java的include目錄(請根據自己系統環境設定),因為Helloworld.c中包含了jni.h。
另外一個值得注意的是在HelloWorld.java中我們LoadLibrary方法載入的是
「HelloWorld」,可我們生成的Library卻是libHelloWorld。這是Linux的鏈接規定的,一個庫的必須要是:lib+庫
名+.so。鏈接的時候只需要提供庫名就可以了。
運行Java程序HelloWorld
大功告成最後一步,驗證前面的成果的時刻到了:
java HelloWorld
如果你這步發生問題,如果這步你收到java.lang.UnsatisfiedLinkError異常,可以通過如下方式指明共享庫的路徑:
java -Djava.library.path='.' HelloWorld
當然還有其他的方式可以指明路徑請參考《在Linux平台下使用JNI》。
我們可以看到久違的「Hello world!」輸出了。

7. linux中.so後綴的文件怎麼使用

在WINDOWS系統中有很多的動態鏈接庫(以.DLL為後綴的文件,DLL即Dynamic Link Library)。這種動態鏈接庫,和靜態函數庫不同,它裡面的函數並不是執行程序本身的一部分,而是根據執行程序需要按需裝入,同時其執行代碼可在多個 執行程序間共享,節省了空間,提高了效率,具備很高的靈活性。同樣,LINUX的也具備類似的動態鏈接庫,而且為數不少。在/lib目錄下,就有許多以.so作後綴的文件,這就是LINUX系統應用的動態鏈接庫,只不過與WINDOWS叫法不同,它叫so,即Shared Object,共享對象。(在LINUX下,靜態函數庫是以.a作後綴的) X-WINDOW作為LINUX下的標准圖形窗口界面,它本身就採用了很多的動態鏈接庫(在/usr/X11R6/lib目錄下),以方便程序間的共享, 節省佔用空間。flash只是一個插件,在windows中就是一個ocx的鏈接庫方式(和dll略有不同),因此linux中一旦你了一個共享函數庫,你還需要安裝它。其實簡單的方法就是拷貝
你的庫文件到指定的標準的目錄(例如/usr/lib),然後運行ldconfig。
如果你沒有許可權去做這件事情,例如你不能修改/usr/lib目錄,那麼
你就只好通過修改你的環境變數來實現這些函數庫的使用了。首先,
你需要創建這些共享函數庫;然後,設置一些必須得符號鏈接,特別
是從soname到真正的函數庫文件的符號鏈接,簡單的方法就是運行ldconfig:
ldconfig -n directory_with_shared_libraries
然後你就可以設置你的LD_LIBRARY_PATH這個環境變數,它是一個以逗號
分隔的路徑的集合,這個可以用來指明共享函數庫的搜索路徑。例如
,使用bash,就可以這樣來
啟動一個程序my_program:
LD_LIBRARY_PATH=.LD_LIBRARY_PATH my_program

8. LINUX下.so結尾的文件如何運行,或者使用

.so結尾的文件是動態鏈接庫,動態鏈接庫不能主動運行,只能被動調用。

.so的使用方法:

  1. 需要這個庫放置到程序的搜索路徑下

  2. 需要這個庫提供的頭文件在c/c++程序中鏈接調用

  3. c/c++程序執行時會到搜索路徑下動態載入.so庫

9. linux下一個.so怎麼知道自己的路徑

so是動態庫,你這個是flash的動態庫,扔到firefox的plugins裡面,如果是自己下的火狐中國版到火狐中國版的目錄找就行了,系統自帶的火狐全球通用版應該是/usr/lib/firefox/,找找。 如果是chrome瀏覽器ln一個連接就行,如果是konqueror在選項里...

閱讀全文

與linuxso路徑相關的資料

熱點內容
事業編程序員下班時間 瀏覽:7
linux中命令大全 瀏覽:36
pic單片機學習網站 瀏覽:163
843除6的演算法 瀏覽:376
arduino編程視頻 瀏覽:744
pdf背景綠色 瀏覽:612
記事本dos命令 瀏覽:274
伺服器如何搭建多個節點 瀏覽:326
acx演算法 瀏覽:258
幽冥詭匠漫畫全集用什麼app可以看 瀏覽:1002
租用伺服器為什麼越來越慢 瀏覽:962
演算法創新就業方向 瀏覽:423
演算法最優解作者 瀏覽:869
通達信紅綠寶塔線指標源碼 瀏覽:668
app是什麼東西合法嗎 瀏覽:233
怎麼鎖app視頻教程 瀏覽:842
迅捷pdf注冊碼生成器 瀏覽:750
androidsdkosx 瀏覽:304
壓縮面膜紙熒光 瀏覽:842
app怎麼分身三個 瀏覽:746