14.04.01 32 비트 : 교차 컴파일시 누락 된 g ++ 64 비트 포함 파일


8

그래서 32 비트 Xubuntu 14.04.1이 설치되었습니다. 우리는 우리가 지원하는 다양한 플랫폼과 Windows DLL을위한 SO를 발표 할 인터페이스 코드를 가지고 있습니다. (예, 바이너리 릴리스는 좋지 않지만 여기서는 관련이 없습니다.)

-m32/ -m64gcc / g ++ 인수를 사용하여 32 비트 14.04.01로 32 비트 및 64 비트 SO를 빌드하려고합니다 . 32 비트 버전은 제대로 작동하지만 64 비트 버전은 실패

/usr/include/c++/4.8/string:38:28: fatal error: bits/c++config.h: No such file or directory

포함을 체크인하면 해당 파일은 실제로 32 비트에는 있지만 64 비트에는 없습니다.

인터넷을 사용하면 문제가 GCC / G ++ 4.6에서 과거에 발생한 것처럼 보이지만 수정 된 것으로 표시됩니다. 그러나 14.04.1은 GCC / G ++ 4.8을 사용하고 있으며, 이는 GCC / G ++ 4.8의 라이브러리에서 회귀가 있음을 나타냅니다. 다른 사람이 본 것입니까?

필요한 경우 64 비트 14.04.1에 대해 새 VM을 설정하고 올바른 라이브러리 버전을 선택할 수 있는지 확인할 수 있습니다. 그래도 가능하다면 다시 설치해야 할 다른 많은 것들이 있기 때문에 가능하지 않습니다. 더 나은 해결책이 있습니까? 그리고 64 비트 14.04.1을 설치하면 다른 방향으로 헤더를 잃지 않고 32 비트로 크로스 컴파일 할 수 있습니까?


... 아마 관련이 없기 때문에 "여기에 관련이없는"내용은 언급하지 않아야합니다.
mikewhatever

2
g++-multilib패키지 를 설치 했습니까 ?
steeldriver

@steeldriver 감사-그게 다야! 64 비트 설치에는 기본적으로 설치되어 있지만 32 비트 설치에는없는 것 같습니다. 좋아, "Linux 빌드 VM 설정 방법"체크리스트에 추가 할 것이있다. :) 그것은 기본적으로 보일지 모르지만, 동일한 컴파일 오류에 대한 다른 사람들의 질문에 대한 답변으로 이것을 지적하지 않았으며 실제로 Linux 전문가는 아닙니다.
Graham

답변:


9

64 비트 bits / c ++ config.h 파일은 g++-multilib패키지 를 설치하여 32 비트 시스템에서 제공되며 그 반대도 마찬가지 이므로 Software Center, Synaptic 또는 터미널을 사용하여 해당 패키지를 설치해야합니다.

sudo apt-get install g++-multilib

이것은 g++-4.8-multilib기본 gcc / g ++ 버전으로 해결되는 의존성 패키지이며 , (32 비트 컴파일시 64 비트 컴파일 lib64stdc++-4.8-dev) 또는 libx32stdc++-4.8-dev( 64 비트 컴파일시 32 비트 컴파일)에 따라 달라집니다 . 실제 헤더 파일.

플레인 C 컴파일러를위한 동등한 패키지 세트가있다 gcc.


4
sudo apt-get install g++-5-multilib필요한 버전을 얻었습니다. 이것이 효과가 없다면 note sudo add-apt-repository ppa:ubuntu-toolchain-r/test && sudo apt-get update또한 내 구성의 일부입니다.
U007D
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.