linux生成 so,查詢編譯問題之雜文

2021-07-26 15:12:30 字數 2126 閱讀 6203

rm -rf file //強制刪除所有檔案

rm -r file  //對於大資料夾會出現?的提問

set wrap   //換行

.xz 檔案解壓xz -d +檔案

查詢檔案

find / -name +檔名

linux下include包含絕對路徑,並且包含庫檔案很嚴格,例如在windows下包含即可使用printf,但是linux下必須包含

拷貝:cp: omitting directory 說明檔案裡有許多檔案,

採用:cp -r //命令來進行遞迴拷貝

動態連線庫

生成:g++ -shared -fpic -o lib[檔名].so  [源**].cpp  ++

連線:g++ main.cpp  -l.  -l[庫檔名不含lib和.so] -o main

-l.--表示在當前檔案查詢

或者將:-o  main.cpp放在最後

g++ -o main -l/liu/project/lib/ -ltiger main.cpp

說明:g++編譯器,-o:表示輸出可執行檔案,-l:表示去哪個目錄下尋找,-l:表示要尋找的庫檔名稱

使用庫函式

將.so 檔案cp到/usr/lib下(不建議使用),或者建立乙個自己lib

使用全域性變數export ld_library_path=[lib的絕對目錄]

export ld_library_path=./ 或 export ld_library_path=/絕對路徑/

//好像過一段時間就要執行一次

./main就可執行。

三個檔案:main.cpp  tiger.h  add.cpp  sub.c 如下

1.add.cpp 

1 int add(int a,int b)

2 2.sub.c

1 int sub(int a,int b)

2 3.tiger.h

1 #ifndef _tiger_

2 #define _tiger_

3 4 int add(int a, int b);

5 int sub(int a ,int b);

6 7 #endif

4.main.cpp

1 #include

2 #include "tiger.h"

3 4 using namespace std;

5 int main()

6 /$/local/lib

localpath=$

include_tag=-i$/src -i$(lpath)/../include

cxx=g++

cflags=-o3

src=$(wildcard *.cpp)

obj=$(patsubst %.cpp,%.o,$(src))

## make rules starts here, you should need to edit anything below this line

#all : $

@(if [ ! -d $ ]; then mkdir $; fi)

@(mv $ $/$)

$ : $ $

$(cxx) $(cflags) -c $ $

$ : $

$(cxx)  $(cflags) -o $ $ -l$/ -lmatio  -lz  

clean:

rm -rf *.o $/$

錯誤1.makefile:2: *** unterminated variable reference.  stop.

make檔案的語法錯誤,缺少(,

2.make: *** no rule to make target `libtiger.so', needed by `main.o'.  stop.

語法錯誤

//ubuntu 編譯時候,出現/tmp/..main.o錯誤,重新編譯gcc_5.2.0後問題竟然消失了,奇怪

//寫好makefile檔案編譯時候,出現不相容,檢視.so 檔案是64位,ubuntu是32位,換centos6.5環境

抓包命令:

tcpdump -i -n 網絡卡 host ip  and \(ip or ip ...\)

表示抓從本地主機到伺服器端口的包。

c編譯生成so 庫

首先 gcc c fpic libst.c 生成 libst.o 然後gcc shared fpic o libst.so libst.o 生成 libst.so 動態鏈結庫 注意 fpic選項。pic指position independent code。共享庫要求有此選項,以便實現動態連線 dyn...

AS編譯c c 生成so檔案

本文講如何用androidstudio生成so檔案 1.新建乙個android專案 2.新建乙個類,並新增native方法 3.生成class檔案4.開啟as的命令終端,輸入命令生成.h檔案 do not edit this file it is machine generated include ...

Linux編譯 so模板

目標檔名 target libmymath.so 生成的目標所放置的位置 target path 編譯引數 cc g 依賴庫名稱,如 libs lpthread libs 指定依賴庫位置,多個引用庫之間以空格分開,如 ldflags l usr lib l lib ldflags 向 提供巨集定義,...