이것은 기본적인 질문 일 수 있지만 gcc와 링크해야하는 라이브러리는 어떻게 찾을 수 있습니까? #include <signal.h>
을 사용하는 공유 라이브러리를 컴파일하려고하는데 사용하려고하면 심볼을 찾을 수 없어 실행 불능 상태가됩니다. gcc에서 플래그 -l
이있는 라이브러리에 대해 구체적으로 링크해야한다고 가정하고 있습니다. 그러나 그 라이브러리가 어디에 있는지/알 수 없습니다.특정 라이브러리를 gcc와 연결
보다 광범위한 예에서 에 대한 -ldl
의 링크에서 -l
은 #include <signal.h>
과 연결할 수 있습니까?
편집 :
soinfo_link_image(linker.cpp:1617): could not load library "mylib.so" needed by "/bin/test";
cause by soinfo_relocate(linker.cpp:975): cannot locate symbol "signal" referenced by "mylib.so"...CANNOT LINK EXECUTABLE
사용하여 컴파일 :
gcc -fPIC -c -g -o mylib.o mylib.c
gcc -shared -o mylib.so mylib.o -ldl
라이브러리를 실행 하시겠습니까? –
라이브러리의 이름이 해당 헤더의 이름과 체계적인 관계가 없기 때문에 모든 경우에 사용할 수있는 절차가 없습니다. 'pkg-config'와 같이 어떤 경우에는 도움이 될 수있는 도구가 있지만 라이브러리를 지원하기 위해 코드를 작성해야합니다. 특별한 경우에'signal.h '의 특별한'-l' 스위치는 필요하지 않습니다. 문제가 다른 것으로 인해 발생하거나 C 라이브러리가 손상되었습니다. 실제 진행 상황을 파악하는 데 도움을 받으려면 질문에 포함 된 오류 메시지의 전체 텍스트와 수정되지 않은 텍스트를 복사하여 붙여 넣으십시오. – zwol
몇 가지 오류가 있습니까? 해당 오류 메시지의 내용이 아마도 * 적어도 질문과 관련 될 수는 없습니다 *! –