gcc 옵션 의미

2821 단어 옮겨 싣다gccWl
https://blog.csdn.net/soaringlee_fighting/article/details/65448010
 
 
GCC 옵션 -Wl,-soname
https://blog.csdn.net/gohome520/article/details/7259450
 
gcc 지정 프로그램 실행 시 라이브러리 검색 경로 추가 포함
gcc main.c -g -o main -lget -L./ -Wl,-rpath=/home/Panodic/zengzhihao/work_place/get

'-L./'는 컴파일 링크가 정확함을 보장하지만, 실행할 때 라이브러리 경로를 찾을 수 있도록 보장하지 않습니다.'-Wl, -rpath'지정한 프로그램이 실행될 때 검색하는 라이브러리 경로는 이 위치를 포함합니다.
 
Makefile 예
all:
	#gcc -g -fPIC -shared -o libget.so.1.2 get.c -Wl,-soname,libget.so.1
	#gcc -g -fPIC -shared -o libget.so get.c
	#gcc main.c  -g -o main -lget -L./
	#aarch64-linux-gnu-gcc -g -fPIC -shared -o libget.so.1.2 get.c -Wl,-soname,libget.so.1
	aarch64-linux-gnu-gcc -g -fPIC -shared -o libget.so.1.2 get.c -Wl,-soname,libget.so.1,-rpath=/mnt/tmp
	#create libget.so.1->libget.so.1.2
	ldconfig -n ./
	-ln -s ./libget.so.1.2 ./libget.so
	aarch64-linux-gnu-gcc main.c  -g -o main -lget -L./ -Wl,-rpath=/mnt/tmp/get



aarch64-linux-gnu-readelf -d libget.so.1.2
Dynamic section at offset 0x870 contains 26 entries:
  Tag        Type                         Name/Value
 0x0000000000000001 (NEEDED)             Shared library: [libc.so.6]
 0x000000000000000e (SONAME)             Library soname: [libget.so.1]
 0x000000000000000f (RPATH)              Library rpath: [/mnt/tmp]

 
두 버전 모두 존재하는 Makefile
all:
	aarch64-linux-gnu-gcc -g -fPIC -shared -o libget.so.1.0 get1.c -Wl,-soname,libget.so.1,-rpath=/mnt/tmp/get
	aarch64-linux-gnu-gcc -g -fPIC -shared -o libget.so.2.0 get2.c -Wl,-soname,libget.so.2,-rpath=/mnt/tmp/get
	#create libget.so.1->libget.so.1.0
        #create libget.so.2->libget.so.2.0
	ldconfig -n ./
	#version 1
	-ln -s ./libget.so.1.0 ./libget.so
	aarch64-linux-gnu-gcc main.c  -g -o main1 -lget -L./ -Wl,-rpath=/mnt/tmp/get
	rm ./libget.so
	-ln -s ./libget.so.2.0 ./libget.so
	aarch64-linux-gnu-gcc main.c  -g -o main2 -lget -L./ -Wl,-rpath=/mnt/tmp/get



aarch64-linux-gnu-readelf -d main1
 0x0000000000000001 (NEEDED)             Shared library: [libget.so.1]

aarch64-linux-gnu-readelf -d main2
 0x0000000000000001 (NEEDED)             Shared library: [libget.so.2]

 

         ,         
   
CC=
        
--prefix=
      
LDFLAGS=-L
          
CPPFLAGS=-I

(     -I,   -L,    -l)
CFLAGS		  C      ,       , CFLAGS+=-I/usr/include -I/path/include
LDFLAGS		gcc             ,           , LDFLAGS+=-L/usr/lib -L./
LIBS			          , LIBS+=-lpthread -lglib2

CXXFLAGS 	  C++      
		


gcc main.c -g -o main -lget -L./ -Wl,-rpath=/home/Panodic/zengzhihao/work_place/get

"-L./"         ,               
"-Wl,-rpath"       ,           

--enable-shared
--disable-shared
--enable-static
--disable-static

 

좋은 웹페이지 즐겨찾기