64 비트에서 32 비트 앱을 컴파일 할 때 -lX11을 찾을 수 없음


9

다음과 같은 명령을 호출합니다.

g++ ... -o"myapp" -lX11 ...

그리고 점점

/usr/bin/ld: cannot find -lX11

멀티 아키 텍을 지원하기 위해 다음 패키지를 설치했습니다.

ia32-libs, libc6-dev-i386 and g++-multilib

그러나 아무 소용이 없습니다. / usr / lib32에 X11.so가없는 것 같습니다. 실제로 해당 디렉토리에는 52 개의 라이브러리 만 있습니다. 수동으로 라이브러리를 설치해야한다는 인상을 받았지만 다음에 확인해야 할 내용이 없습니다.

도움을 주셔서 감사합니다.


1
명령의 출력을 보여줄 수 있습니까 ldconfig -p | grep libX11\\.?
Martin Dirichs

답변:


5

-dev라이브러리 패키지 자체가 아닌 패키지 로 제공되는 헤더 파일이 필요합니다 . 따라서 설치를 시도하십시오 libx11-dev. 다른 라이브러리에 대해 비슷한 오류가 발생할 수 있지만이 -dev패키지를 설치할 수는 있지만이 특정 빌드 오류를 수정해야 합니다.

비록 이러한 패키지 오히려 바이너리보다 헤더 파일을 제공하고, 일반 헤더 파일은 계정 전처리 매크로의 사용을 통해 지원되는 모든 아키텍처, 그럼에도 불구하고 -dev패키지 우분투 아키텍처 고유의 경향에서, 이것은의 경우입니다 libx11-dev볼 수 있듯이 ( 여기 에서 릴리스를 확장하고 해당 릴리스에 .deb나열된 패키지를 찾으십시오 libx11-dev. Ubuntu 시스템이 64 비트이고 32 비트 버전의 라이브러리와 링크해야하는 32 비트 프로그램을 컴파일하고 있으므로 32 비트 버전의을 설치해야합니다 libx11-dev. apt-get또는로 설치하는 경우 설치할 패키지로 aptitude표시 libx11-dev:i386하여 지정할 수 있습니다 ( multarch 이후) 지원 및 사용 중).

http://packages.ubuntu.com/-dev라이브러리 패키지에 해당 하는 패키지 이름을 찾는 데 유용한 리소스입니다 . 라이브러리 패키지 이름이 항상 바로 뒤에 오는 것은 아닙니다 -dev. 때로는 라이브러리 패키지 이름에, 특히 a 뒤에 나오는 버전 번호 가 해당 패키지 이름에 없는- 경우가 있습니다.-dev

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.