usr/bin/ld: cannot find -l<nameOfTheLibrary>
내가 내 명령을 사용하여 https://partner. microsoft. g++ '와' make my 라이브러리란 원하는거요 심볼릭 링크 라이브러리 ap. 협력하였습니다 내 다른 디렉터리입니다.
추가할 수 있는 옵션이 있을 수 있도록 작동합니까 제발이네.
링커는 실행하십시오 자세히 찾고 이를 분석할 수 있는 모드.
예를 들어, MySQL 컴파일하십시오 함께 할 때 나는 이 문제가 발생하는 ZLIB 지원. 난 이런 오류가 발생한 컴파일하는 동안:
/usr/bin/ld: cannot find -lzlib
I did 일부 googl& # 39, ing 같은 종류의 다양한 문제를 계속 나오고 있는 사람들이 말할 수 있는지, 실제 존재하는 경우, .so 파일 < library> doesn& # 39, t, 다음 버전을 만들기 위해 .1.2.8. 심볼릭 링크 파일 (예: zlib.so 하지만 때는 내가 체크된다면, zlib.so 아니하였으매 존재합니다. 따라서 생각해봤죠 실로 couldn& # 39, 문제가 될 것이 없다.
함께 할 수 있는 다른 post 에 걸쳐 왔는지 인터넷 제안됩니다 실행하십시오 LD_DEBUG = 모두:
LD_DEBUG=all make
I got a, t, t # 39 의 it wasn& 디버깅하지 출력입니다 있지만 실제로 도움이 된다. 이 신문은 다른 사항은요 것보다 더 큰 혼란을 겪었다. 그래서, I was about to give up.
그럼 내가 epiphany 끼쳤습니다. 실제로 이 도움말에서는 생각해봤죠 확인란 대한 텍스트 ld 명령:
ld --help
내가 생각 하는 방법을 자세히 실행하십시오 ld 의 모드 (생각해야):
ld -lzlib --verbose
이는 출력물에는 나는 attaboy:
==================================================
attempt to open /usr/x86_64-linux-gnu/lib64/libzlib.so failed
attempt to open /usr/x86_64-linux-gnu/lib64/libzlib.a failed
attempt to open /usr/local/lib64/libzlib.so failed
attempt to open /usr/local/lib64/libzlib.a failed
attempt to open /lib64/libzlib.so failed
attempt to open /lib64/libzlib.a failed
attempt to open /usr/lib64/libzlib.so failed
attempt to open /usr/lib64/libzlib.a failed
attempt to open /usr/x86_64-linux-gnu/lib/libzlib.so failed
attempt to open /usr/x86_64-linux-gnu/lib/libzlib.a failed
attempt to open /usr/local/lib/libzlib.so failed
attempt to open /usr/local/lib/libzlib.a failed
attempt to open /lib/libzlib.so failed
attempt to open /lib/libzlib.a failed
attempt to open /usr/lib/libzlib.so failed
attempt to open /usr/lib/libzlib.a failed
/usr/bin/ld.bfd.real: cannot find -lzlib
자는, ding, ding.
그래서, 그래서 내 스스로 할 수 있는 최종 버전은 MySQL 컴파일하십시오 해결하십시오 ZLIB 대신 번들 버전).
sudo ln -s /usr/lib/libz.so.1.2.8 /usr/lib/libzlib.so
짜잔!
'Libxyz.so' 과 라이브러리가 이름님은 말하도다 삼중평균 말하도다 위치해 있다.
/home/user/myDir
그 다음에는 연결합니다 프로그램:
g++ -L/home/user/myDir -lxyz myprog.cpp -o myprog
모든 문제를 해결하는 가장 일반적인 대답 없는 공존할 수 있는 초급 필요한 라이브러리 설치) 에서 1 위를 차지했다.
',' 의 경우 데비아니쉬 플랫폼상의 리브포 누락되었는지 함께 이 같은 일이 자주 설치할 수 있습니다.
apt-get install libfoo-dev
이 버전의 패키지 '는' 개발 개발 작업이 필요한 라이브러리를 소스 코드를 https://partner. microsoft. 컴파일하기를 같은 사소한 개발 작업을 한다.
패키지 이름 (libfoo0 개발 '?' 는 때때로 장식 필요합니다 'foo 개발' 없이 'lib' 접두어입니다? # 39 의 distro& 사용 등), 또는 됩니다 [패키지로의 검색] (https://packages.debian.org/search, libfoo.so 여러_키워드 contents& 시라전? = = = = = 사용, 아치 stable& exactfilename& &, 모드, suite) 정확하게 알 수 있는 패키지를 사용하면 특정 파일.
(협업공간이 둘 이상 있는 경우에는 그 차이가 알아 볼 필요가 있다. 등이 가장 차가운 또는 가장 인기 있는 것은 일반적인 짧은보기 적정한 절차를 아니라 모든 erious 개발 업무를.)
다른 아키텍처 (가장 유명한 RPM) 유사한 절차를 표시되어도 적용하십시오 detaiils 다를 것이라고 강조했습니다.
찾을 수 없을 때 ',', 즉, nameOfTheLibrary> l< g++ 말한다 - {} 의 g++ 생각하고 있지만, couldn& 나미공텔리브라리 .so 파일 'lib 파일을 찾을 수 있는' t # 39 점, 이는 기본적으로 공유 라이브러리 경로 검색 / usr / local / lib '와' / usr / lib '와' 다른 곳으로 아마.
이 문제를 해결하려면 인컨텍스트 합니다 제공하십시오 라이브러리 파일 ({} 'lib 나미공텔리브라리 .so') 이 검색 경로를 사용하거나 '-l' 명령을 사용할 수 있습니다. {} '에서' l g++ 경로를 찾을 수 있는 길 ' (실제로는' ld ') {}' 기본 라이브러리 파일 경로를 외에도 패스.
g++ main.cpp -o main -L/home/taylor -lswift
2 참고: 경우에 따라 해당 버전, 예를 들어 ' (libswift.so) 가 그 뒤를 쫓고 라이브러리 파일 이름을 .1.2'. 이 경우, g++ 또한 라이브러리 파일을 찾을 수 없습니다. 이것은 단순한 ' (libswift.so)' 로 불리는 .1.2 해결하십시오 해결하십시오 심볼릭 링크를 만드는 'libswift.so'.
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/taylor
'정의' 와 '할 경우 LIBRARY_PATH 컴파일하는 동안 g++' '를 통해' make '-l' 옵션을 변경할 수 있는 적절하지 않을 수도 있습니다. 그래서 나는 내 추가 / opt / lib 미룬 라이브러리의 'I did.
$ export LIBRARY_PATH=/opt/lib/
'수' 를 성공한 후 실행했음 컴파일 및 연결.
프로그램을 실행할 수 있는 공유 라이브러리 정의:
$ export LD_LIBRARY_PATH=/opt/lib/
이 프로그램을 실행하기 전에.
첫째, you need to know) '' 우스스 명명 규칙이 있다.
/usr/bin/ld: cannot find -lc
/usr/bin/ld: cannot find -lltdl
/usr/bin/ld: cannot find -lXtst
lc '는' libc.so ',' ' (libltdl.so)' 는 'libXts.so', '로스테스트 루트들' 는 ''.
그래서 'lib' + '' + '' lib 이름 .so
우리가 아는 한 번 이름을 찾기 ',' 이 'lxxx.so' 파일 경로를 찾기 위해 사용할 수 있습니다.
$ locate libiconv.so
/home/user/anaconda3/lib/libiconv.so # <-- right here
/home/user/anaconda3/lib/libiconv.so.2
/home/user/anaconda3/lib/libiconv.so.2.5.1
/home/user/anaconda3/lib/preloadable_libiconv.so
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/libiconv.so
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/libiconv.so.2
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/libiconv.so.2.5.1
/home/user/anaconda3/pkgs/libiconv-1.14-0/lib/preloadable_libiconv.so
이를 통해 찾을 수 없는 경우 it, you need to install '염' (내가 사용하는 CentOS). 일반적으로 이 파일을 가지고 있는 것은 아니지만 https://partner. microsoft. 최적의 장소.
링크 ',' 보통 '또는' /usr/lib64 /lib64 迈向 적절한 장소에 있다.
$ sudo ln - s /home/user/anaconda3/lib/libiconv.so /usr/lib64/ ''
완료!
ref: https://i-pogo.blogspot.jp/2010/01/usrbinld-cannot-find-lxxx.html
이와 별도로 이미 지정된 경우도 있지만, 그 답을 할 수 있는 파일 이름이 지정되지 않은 경우 .so 비판을 받아왔다. 또는 다른 사용자가 파일을 .so 존재하지만 소유하고 있는 경우가 있을 수 있습니다 / root.
이 경우 ',' nameOfLibrary> 링크뿐 파일로 -l<. 그럼 라이브러리 파일 이름을 ',' 형태의 lib< nameOfLibrary> 합니다. So 파일 변경하십시오 nameoflibrary> < 개뿐인 경우, ',' it!
그것을 확인하기 위해 이 문제가 아니다.
ls -l /path/to/.so/file
루트 파일 소유하고 있는 경우 또는 다른 사용자가 수행해야 합니다
sudo chown yourUserName:yourUserName /path/to/.so/file
I was trying to https://partner. microsoft. 켜졌음 아웃하려면 라이브러리 투명지에 비표준 이름 (즉, # 39, & # 39 lib& wasn& 접두어로, t # 39;) 이 있기 때문에 이런 명령을 사용하여 권장됨 컴파일하십시오 -
gcc 테스트리스 - 이힝클로드 lib/cspice.a lm '-'
다음은 정보 unbuntu 내 노트북.
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 18.04.2 LTS
Release: 18.04
Codename: bionic
내가 사용하는 .so 파일 및 boost_system boost_filesystem 위치를 찾을 수
locate libboost_filesystem
locate libboost_system
그럼 https://partner. .so 파일 및 이름 바꾸기 위해 .so / usr / lib
sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_filesystem.so.1.65.1 /usr/lib/libboost_filesystem.so
sudo ln -s /usr/lib/x86_64-linux-gnu/libboost_system.so.1.65.1 /usr/lib/libboost_system.so
완료! R 패키지로의 벨로시토. R 은 설치 완료!