2011-02-10 4 views
18

죄송합니다! 나는 이것을 많이 봤고 대답을 찾을 수 없다! 내가 아는 바보 야.eclipse에서 링크 정적 lib cd3

eclipse cdt의 정적 라이브러리 (* .a)에 연결할 수 없습니다. 프로젝트 -> 설정 -> GCC C++ 링커 -> 라이브러리에서 모두 나열했습니다. 나는 ... 확실히 내가 lib 디렉토리 올바른했다 확인하기 위해 절대 경로를 사용하고 내가 얻을 :

이 -l 찾을 수 없습니다를/usr/local/lib로/libboost_date_time.a

나는 내가 어떤 바보의 확신

편집 :(잘못하고 - 그리고 난 ... 난 런타임 라이브러리를 연결하고 내가 돌아 오는 길에 나는 리눅스에서 우리의 코드를 컴파일 할 때 유사한 문제를 가진 기억

+1

':'을 붙이면 gcc에서 libs의 전체 경로를 지정할 수 있습니다. 따라서 귀하의 경우에는 '-l : /usr/local/lib/libboost_date_time.a', 또는 ':/usr/...'을 eclipse의 라이브러리에 추가하십시오. 그러나 접두사 'lib'의 관습과 검색 경로를 추가하는 것은 이유가 있기 때문에 필요한 경우에만 절대 경로를 사용하는 것이 좋습니다. – erebos

답변

18

을 언급해야한다 (A에서 오는 윈도우 배경) 그리고 정적 라이브러리에 대한 절대 경로를 올바르게 지정 했는지도 기억하지 못하면 작동하지 않습니다.

"libboost_date_time.a"에 링크하려면 "lib"및 ".a"없이 "boost_date_time"을 지정해야합니까? 제 경우에는 그 문제가 해결되었습니다. 어쨌든 AFAIR에서는/usr/local/lib가 경로에 있어야합니다.

+1

나는 ".a"를 삭제하지 않았으며 여전히 같은 오류가 발생합니까 ?? – JonnyCplusplus

+2

@Ralph .... 알았어 ... "lib"또는 ".a"없이 각 dir (-L)과 각 라이브러리를 설정해야합니다. – JonnyCplusplus

+0

라이브러리에서'-l' 플래그를 사용하지 않고 링크 할 수 있습니다 (예 :'gcc foo.cpp/usr/local/lib/libboost_date_time.a') –

7

C/C++ General->Paths & Symbols 구성 화면에서 libs를 추가 할 때 비슷한 문제가 발생했습니다.

대신 GCC C++ Linker/Libraries에서 C/C++ Build -> settings 화면에 내가 LIB 및 .a 라이브러리 (-l) 및 라이브러리 검색 경로 (-L)에 경로를 추가하지 않고 라이브러리 이름을 추가했다. 이게 내 문제를 해결했습니다

+0

@ 256 : 아마도이 답변이 도움이되지 않으면 새로운 질문을 시작하는 것이 가장 좋습니다. – Enigma

+0

thx. "lib"를 제거하고, ".a"는 누락 된 링크였습니다! – smertrios

13

정적 라이브러리 또는 아카이브는 개체 파일의 모음 일뿐입니다.

enter image description here

어떤 사람들은 전체 경로 이름을 지정하는 동안 피 묻은 살인을 울 : 기타이> - -> 설정 -> C++ 링커

다른 객체 C/C++ 빌드에서로 아카이브를 추가합니다. 나는 실제로 (이론과는 달리) 경로의 파일 이름이 인 것을 깨고 -L-l으로 지정하는 것보다 더 나쁘지 않다. 그리고 실제로 실제로 작동한다고 언급 했는가 ...

+0

시도해 보았지만 제대로 작동하지 않는 것 같습니다. 나는 최신 mongodb 운전사와 함께 이것을했다. 내가 조심해야 할게있어? include 경로에 ".so"libs가 없으니까요? –

+0

이것은 그의 아카이브가'lib' 접두어가 아니기 때문에 아마도 OP에 대한 최선의 대답 일 것입니다. 그것은 나를 위해 치료를했습니다. 감사! – Mawg

관련 문제