이 명령으로 C 코드를 컴파일하려고 합니다.gcc -Wall -m32 -std=gnu99 -o <filename> <filename>
출력 파일을 얻는 대신 이것을 얻습니다.
/usr/bin/ld: cannot find Scrt1.o: No such file or directory
/usr/bin/ld: cannot find crti.o: No such file or directory
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/7/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/7/libgcc_s.so.1 when searching for libgcc_s.so.1
/usr/bin/ld: cannot find libgcc_s.so.1
/usr/bin/ld: skipping incompatible /usr/lib/gcc/x86_64-linux-gnu/7/libgcc.a when searching for -lgcc
/usr/bin/ld: cannot find -lgcc
collect2: error: ld returned 1 exit status
로 컴파일하면 -std=c11
완벽하게 작동하지만 - 로는 작동하지 않습니다 std=gnu99
.
답변1
기본적으로 이는 시스템에서 32비트를 지원하지 않고 64비트만 지원한다는 의미입니다.
main.c 사용
/* extern void start(); */
int main()
{
/* start(); */
}
그리고
gcc -m32 main.c -o main
gcc만 설치된 우분투 18.04를 사용했습니다.
> ~/PROJECT2/ciforthcvs$ gcc -m32 main.c -o main /usr/bin/ld: cannot
> find Scrt1.o: No such file or directory /usr/bin/ld: cannot find
> crti.o: No such file or directory /usr/bin/ld: skipping incompatible
> /usr/lib/gcc/x86_64-linux-gnu/7/libgcc.a when searching for -lgcc
> /usr/bin/ld: cannot find -lgcc /usr/bin/ld: skipping incompatible
> /usr/lib/gcc/x86_64-linux-gnu/7/libgcc.a when searching for -lgcc
> /usr/bin/ld: cannot find -lgcc collect2: error: ld returned 1 exit
> status
~ 후에
su
# apt install multi-lib
모든 것이 잘 진행되었고, 아무것도 하지 않는 프로그램을 실행할 수 있었습니다.
답변2
노력하다:
find / -iname='*Scrit1.o*' 2>/dev/null
find / -iname='*criti.o*' 2>/dev/null
읽기 위해 gcc 명령을 수정하십시오.
gcc -Wall -m32 -std=gnu99 -o <filename> <filename> /some-path/Scrit1.o /some-other-path/criti.o