64비트 Linux OS에서 32비트용 컴파일 프로그램으로 인해 치명적인 오류가 발생함
사용.
gcc -m32 myprog.c
32비트 버전으로 파일을 컴파일해야 합니다.myprog.c
.
유감스럽게도 다음 오류가 발생했습니다.
In file included from /usr/include/stdio.h:27:0,
from myprog.c:1:
/usr/include/features.h:374:25: fatal error: sys/cdefs.h: No such file or directory
#include <sys/cdefs.h>
제가 이걸 어떻게 고칠 수 있을까요?
사용하지 않을 경우-m32
작동하지만 64비트 명령어를 사용합니다.
64비트 Linux 버전에서 32비트 이진 파일을 컴파일하려면 설치해야 합니다.libx32gcc
개발 패키지 및 32비트 GNU C 라이브러리
이것을 먹어보세요.
sudo apt-get install libx32gcc-4.8-dev
그리고.
sudo apt-get install libc6-dev-i386
gcc multilib 지원이 필요합니다.패키지 설치gcc-multilib
예:
sudo apt-get install gcc-multilib
저는 이와 같은 문제에 직면했습니다.64비트 우분투 버전에서 32비트 So 파일을 빌드하려고 할 때.
lib 버전을 netbeans(-> project properties -> C 컴파일러 -> 추가 옵션)에서 64비트로 전환하여 빌드할 수 있습니다.
-shared -m64
이 문제를 해결하려면 먼저 sys/cdefs.h 파일을 제공할 패키지를 알아야 합니다.
CentOs/RHEL 기반 시스템에서는 아래 명령을 실행하여 찾을 수 있습니다.
yum provides '*sys/cdefs.h'
마찬가지로 Debian/Ubuntu 시스템에서는 다음을 실행하여 찾을 수 있습니다.
apt-file search 'sys/cdefs.h'
참고: apt-file 패키지가 시스템에 아직 없는 경우 명령을 사용하여 설치합니다.
apt-get install apt-file
위의 두 명령어는 각각의 패키지 관리 시스템 데이터베이스(예: RPM/Apt)를 스캔하고 "sys/cdefs"로 끝나는 파일을 제공하는 패키지의 이름을 알려줍니다.h."
명령에 나열된 패키지에서 적절한 패키지를 설치합니다.
맘에 들다
CentOs/RHEL에서:
yum install glibc-headers
온 데비안/우분투
apt-get install libc6-dev
이 접근 방식은 이 특정 문제뿐만 아니라 일부 패키지가 제공하지 않는 필수 파일을 보고하는 유사한 문제에도 유용합니다.
언급URL : https://stackoverflow.com/questions/23498237/compile-program-for-32bit-on-64bit-linux-os-causes-fatal-error
'programing' 카테고리의 다른 글
(:임의)에 대한 코드 점화기의 라우팅 (0) | 2023.07.09 |
---|---|
'JavaCompile' 유형 속성 'options.compilerArgumentProviders.apt$0.name '에 입력 또는 출력 주석이 없습니다.Gradle 7로 업그레이드한 후 오류 발생 (0) | 2023.07.09 |
문자열 내의 특정 문자 바꾸기 (0) | 2023.07.04 |
세션이 생성되지 않음:이 버전의 ChromeDriver는 셀레늄을 사용하는 ChromeDriver Chrome에서 Chrome 버전 74 오류만 지원합니다. (0) | 2023.07.04 |
봄 부츠를 신은 카프카 스트림 (0) | 2023.07.04 |