GCC -std=gnu99 오류

GCC -std=gnu99 오류

이 명령으로 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

관련 정보