2012-05-21 2 views
0

gcc로 공유 라이브러리를 만들려고합니다. vxworks 용 gcc입니다 (문제 일 수도 있습니다 ...).GCC가 플래그를 표시하지 않습니다.

나는 다음과 같이 GCC를 사용

./gcc -shared -B/path/to/gnutools/bin -o test.so test.c 

결과 : 나는 리눅스 GCC와 같은 시도 할 경우

/path/to/ld: -r and -shared may not be used together 
collect2: ld returned 1 exit status 

, 아무 문제가 없다합니다. 그래서 VxWorks 용 gcc가 링커에 자동으로 -r (또는 동일하고 결과가 같은 -i) 플래그를 전달하는 것 같습니다. 이것을 막을 수있는 방법이 있습니까?

Greetz

마티

PS :

 
    gcc -Wall -fPIC -c -o test.o test.c 
    gcc -Wall -shared -o test.so test.o 

: 그것은 정적 만드는 것은

+0

입니까? 볼 수있는 쉘 스크립트이고, 편집 된 사본을 작성하여 -r을 제거 할 수 있습니까? –

+0

예, 쉘 스크립트입니다. 그러나 그 안에 no -r 또는 -i가 없습니다. 방금 -B (바이너리) 및 -I (포함) pathes를 추가했습니다. 그리고 gcc를 직접 호출해도 아무런 변화가 없습니다. –

답변

0

별도로 -fPIC와 오브젝트 파일을 컴파일 시도하고 연결 ... 정말 대안이 아니다 또 다른 제안은 libtool을 사용하는 것입니다 (적어도 적절한 플래그를 찾으려면).

해결 방법은 ld로 직접 이동할 수 있습니다 : ./gcc은 무엇

 
    ld -shared -o test.so test.o -lc 
+0

결과는 여전히 동일하지만 ... -r이 어디에서 오는지 궁금해합니다. libtool은 리눅스를위한 것 같습니다. VxWorks에 필요합니다. 하지만 아이디어에 고맙습니다 :) –

+0

다른 하드 코어 해결 방법으로 답변을 업데이트했습니다. –

+0

해결 방법은 작동합니다. 고맙습니다. 다른 매개 변수 때문에 gcc를 연결해야하기 때문에 계속 작업하고 있습니다. 예를 들어 다른 라이브러리를 포함해야합니다. –