공유 라이브러리에 정적 라이브러리를 추가할 수 있나요?
글쓴이: lunarainbow / 작성시간: 목, 2003/10/02 - 9:06오후
gcc -c -fPIC test.c /usr/local/lib/mysql/libmysqlclient.a -I/usr/local/include/mysql -L/usr/local/lib/mysql -lz gcc: /usr/local/lib/mysql/libmysqlclient.a: linker input file unused because linking not done gcc: -lz: linker input file unused because linking not done
컴파일을 하면 위와 같은 메세지가 뜹니다.
이 test.c를 공유라이브러리(.so)로 만들고자 하는데, mysql API를 사용합니다.
/usr/local/lib/mysql/libmysqlclient.a => -static -lmysql
이렇게 바꾸어도 같은 메세지가 출력됩니다.
사정상 새로 만들 라이브러리는 공유라이브러리여야 합니다.
어떻게 해야 저 메세지를 없앨 수 있을까요? :cry:
무시하고 넘어가보니 mysql 함수가 등록되지 않아 mysql 사용하는 부분에서 에러가 나던데...
아. 그래서 나중에 이렇게 만든(메세지 나온거 무시하고 만든..) 라이브러리를 사용할시 컴파일 옵션에 mysql에 관한것을 링크시켜주면 잘 돌아가게 되긴 합니다.
하지만 저는 그것을 원하지 않기 때문에.. ㅡㅜ
지금 제가 생각할 수 있는 방법은,
mysql 함수를 사용할때 모두 dlopen 등을 사용하여 mysql 함수를 불러들여서 gcc 옵션에 적지 않아도 되도록 하는것 뿐이예요.
Forums:
-c 가 들어가면, -L, -l (엘) option 들과 같이 link에
-c 가 들어가면, -L, -l (엘) option 들과 같이 link에 관련된 것들은 의미가 없게 됩니다.
또한 archive 파일들이 shared object로 들어갈 수있냐고하셨는데, archive 를 만들때 들어간 object 를 컴파일할 당시 -fPIC 같이 position independent code 형태로 만들지 않았으면, shared object로 만들 수 없습니다.
아마 libmysqlclient.a 가 그런 option하에 만들어지지 않았으므로 불가능할 것 같습니다.
---
http://coolengineer.com
댓글 달기