當前位置:首頁 » 編程軟體 » linuxopenssl編譯動態庫

linuxopenssl編譯動態庫

發布時間: 2022-08-25 09:45:38

A. openssl怎麼編譯成動態庫

1、靜態編譯
./Configure linux-elf-arm -DB_ENDIAN linux:'armeb-linux-gcc -mbig-endian' --prefix=$(pwd)/OpenSSL
a、 將openssl-0.9.8d/crypto/bio/bss_file.c中以下代碼注釋掉
//#ifndef _FILE_OFFSET_BITS
//#define _FILE_OFFSET_BITS 64
//#endif
#endif
b、 報錯沒有timeb.h時,在報錯的.c文件中#undef TIMEB
c、 去掉openssl頂層Makefile中「build_all:」後面的 build_app build_test (我們要的只是兩個靜態庫libcrypto.a和libssl.a),並去掉」DIRS=」後面的app和tests。
make && make install

2、動態庫
1.config:
#config no-asm --prefix=../OpenSSL
2.改Makefile
1) CC= gcc 改成 CC = armeb-linux-gcc;
2) 刪除 CFLAG= 中的 「-march=pentium」;
3) AR=ar $(ARFLAGS) r 改為 AR=armeb-linux-ar $(ARFLAGS) r;
4) ARD=ar $(ARFLAGS) d 改為 ARD=armeb-linux-ar $(ARFLAGS) d;
5)RANLIB= /usr/bin/ranlib 改為 RANLIB= armeb-linux-ranlib;
3.編譯
#make
#make install

B. 在安裝openssl時,編譯動態鏈接庫的時候,出現了以下錯誤,求大神幫忙解決!!!

編譯OpenSSL不要在CMD下面編譯,應該盡量在Visual Studio自帶的32或64位命令行編譯環境中編譯,要不然會報各種錯誤。

C. linux中編譯時怎麼連接動態庫

Linux系統中靜態庫是.a文件,編譯鏈接.a文件只需要加上.a文件的完整路徑就可以了,比如:
gcc -o hello hello.c /usr/lib/libm.a
Linux系統的動態庫是.so文件,編譯鏈接動態庫需要用-L參數指定動態庫的搜索路徑,還要用-l(這個是小寫的L)指定動態庫的名字,比如:
gcc -o hello hello.c -L/usr/openssl/lib -lcrypto

D. linux 編譯怎麼連接動態庫

Linux的動態庫文件是以lib字樣開頭的.so文件,編譯鏈接動態庫有兩個要點:一個是需要用-L選項指定動態庫的搜索路徑,這個搜索路徑是需要連接的so文件的大致路徑,比如/usr/openssl/lib;另外還需要用-l(這個是小寫的L)選項指定動態庫的名字,比如下面這條編譯命令:
gcc -o hello hello.c -L/usr/openssl/lib -lcrypto

E. 編譯安裝openssl時使用參數zlib-dynamic和zlib有什麼區別

./config shared zlib./config shared zlib-dynamic

一個是靜態鏈接,一個是動態庫,windows下為dll,linux為啥來著我也忘了。

這個參數的意思是,openssl應該使用哪個方式來獲取zlib依賴。如果你全局安裝了zlib-devel,那麼選擇zlib-dynamic即可。

如果你選擇zlib,可能需要配置zlib-src,也就是zlib的源碼讓openssl可以將其靜態編譯到自己體內。

F. linux下如何編譯安裝openssl模塊請高手詳細解答一下。。。。。。。。。。【】【】

1$ tar zxvf openssl-0.9.8k.tar.gz -C /opt/

2$ ./config --prefix=/usr/local/ssl-0.9.8lk shared zlib-dynamic enable-camellia --prefix=/usr/local/ssl-0.9.8lk

3$ ./config -t

4$ make depend

5$ make

6$ make test

7$ make install

/********************************************************************/
附加: 為了ssl

a:$ /usr/local/ssl-0.9.8lk/ssl

b:$ vi openssl.cnf
default_bits = 1024
改 default_bits = 8192//為了安全最好改為4096以上的數據

c:$ countryName = Country Name (2 letter code)
改 countryName = CN //只能使用2字母的國家代碼

d:$ countryName_default = AU
改countryName_default = Beijing
= Beijing //省份或直轄市名稱

/**********************************************************************/

8$ a)cd /usr/local
b)ln -s ssl-0.9.8lk ssl

9$ a)cd /etc/ld.so.conf.d
b)cp -r /usr/local/ssl-0.9.8lk/lib/ ./

10$ cd /etc
vi ld.so.conf
加入:/usr/local/ssl-0.9.8lk/lib

11$ cd /usr/local/ssl-0.9.8lk/lib
ldconfig

12$ vi /root/.bash_profile
另外一個終端:echo $PATH 把PATH顯示路徑加入到.bash_profile里
例如: PATH=$PATH:/usr/local/ssl-0.9.8lk/bin$HOME/bin

13$ source ~/.bash_profile

14$ cd /usr/local/

15$ ldd /usr/local/ssl-0.9.8lk/bin/openssl

16$ which openssl

17$ openssl version

G. 新手:Linux下使用第三方C庫(openssl),是調用.so文件還是直接調用.h文件

不管什麼庫文件,你都既要在包含.h文件(不然編譯通不過:有未聲明的函數),也要在gcc選項裡面指定.so文件的位置(不然鏈接通不過:未知的符號)
比如
gcc -I include_path -L lib_path -lyourlib
include_path改成你頭文件的目錄
lib_path改成你動態庫文件的目錄
-lyourlib 改成l加上你要引用的庫文件名字
比如libpthread.so就改成-lpthread

H. linux下編譯android版本的openssl動態庫帶有dwarf調試信息,求教怎麼編譯不帶dwarf調試信息的動態庫

編譯的時候是不能調試的哦,調試只能在編譯好之後,VC中默認DEBUG模式,在編譯時加入調試信息,然後按下F5即可進行調試,F9下斷點,F10單步跳過, F11單步跟入...SHIFT F5停止調試。。

I. Linux下的靜態庫和動態庫

linux下的靜態庫和動態庫1.製作自己的動態庫和靜態庫linux下動態庫以.so結尾,靜態庫以.a結尾,它們都以lib開頭,比如一個庫名為net,那麼它的全名應該是libnet.so或者libnet.a。我們有兩個文件,hello.c和test.c,下面是兩個文件的內容//hello.c
www.shiwu.com
#include
<stdio.h>void
my_lib_func(){printf(Library
routine
called/r/n);}//test.c#include
<stdio.h>
www.shiwu.com
int
main(){my_lib_func();return
1;}test.c調用了hello.c的方法,我們把hello.c封裝成庫文件。無論是靜態庫還是動態庫,都是由.o文件組成,我們先把gcc
-c
hello.c生成.o文件製作靜態庫ar
crv
libmyhello.a
hello.o,ar是生成靜態庫的命令,libmyhello.a是我的靜態庫名。下一步就是在我的程序中使用靜態庫
可以看到已經有了Library
routine
called的結果,說明調用成功了。下面我們刪除libmyhello.a,看看程序是否還是運行正常
我們發現程序依然運行正常,說明靜態庫已經連接進入我們的程序中製作動態庫
www.shiwu.com
我們看見動態庫libmyhello.so已經生成,下面繼續使用
找不到庫文件,這個時候我們把so文件拷貝到/usr/lib下面
運行成功2.動態庫和靜態庫同時存在的調用規則我們可以發現,不論是動態庫還是靜態庫,程序編譯連接的時候都是加的參數-l,那麼當他們同時存在的時候,程序會選擇動態庫還是靜態庫呢。我們做個嘗試。
我們同時存在libmyhello.a和libmyhello.so,我們發現運行的時候,出現找不到動態庫的錯誤,由此,我們可以得出結論,同時存在動態庫和靜態庫的時候,gcc會優先選擇動態庫作者
梨樹陽光

熱點內容
精易編程 發布:2025-02-07 00:49:10 瀏覽:464
訪問桂綸鎂 發布:2025-02-07 00:49:00 瀏覽:938
安卓免費掃描哪個好 發布:2025-02-07 00:47:40 瀏覽:90
金蝶修改伺服器地址 發布:2025-02-07 00:41:08 瀏覽:867
安卓手機版的蒸汽平台在哪裡下載 發布:2025-02-07 00:29:04 瀏覽:454
php自學中心 發布:2025-02-07 00:28:50 瀏覽:270
手機卡在哪裡設置密碼 發布:2025-02-07 00:21:25 瀏覽:707
解壓哄睡音頻 發布:2025-02-07 00:19:56 瀏覽:159
資料庫系統第六版答案 發布:2025-02-07 00:06:10 瀏覽:971
fut加密毛發怎麼樣 發布:2025-02-07 00:06:01 瀏覽:869