source

GCC를 사용하여 C 및 C++ 파일을 함께 컴파일

manysource 2023. 8. 18. 22:47

GCC를 사용하여 C 및 C++ 파일을 함께 컴파일

저는 GCC를 사용하여 C와 C++ 소스를 함께 컴파일하려고 합니다.

gcc -std=c++0x test.cpp -std=c99 test.c -lstdc++

두 번의 경고를 받는 것을 제외하고는, 이것은 잘 작동합니다.

cc1plus: warning: command line option "-std=c99" is valid for C/ObjC but not for C++
cc1: warning: command line option "-std=c++0x" is valid for C++/ObjC++ but not for C

그래서 사용할 수 없습니다.-Werror이 설정을 사용합니다.이러한 경고를 어떻게든 억제할 수 있습니까?

파일을 별도로 컴파일하고 g++로 링크합니다.

gcc -c -std=c99 -o file1.o file1.c
g++ -c -std=c++0x -o file2.o file2.cpp
g++ -o myapp file1.o file2.o

Android에서 가장 좋은 방법을 알고 싶은 사람은 다음과 같습니다.

LOCAL_CFLAGS := -Werror
LOCAL_CONLYFLAGS := -std=gnu99
LOCAL_CPPFLAGS := -std=c++0x

gccC 컴파일러이고g++C++ 컴파일러입니다.당신은 다른 스타일의 두 언어를 혼합하고 있습니다.따로 컴파일한 다음 링크:

gcc -std=c99 -c -o test.c.o test.c
g++ -std=c++0x -c -o test.cpp.o test.cpp
g++ -o executable test.cpp.o test.c.o

이는 Android NDK와 매우 관련이 있습니다.다행히도, 끔찍한 해결책이 있습니다.모든 C 파일을 다음과 같이 컴파일하려면c99모든 CPP 파일을 다음과 같이 저장합니다.c++0x다음 행을 Android.mk 파일에 추가합니다.

LOCAL_CPPFLAGS += -std=c++0x
LOCAL_C99_FILES := $(filter %.c, $(LOCAL_SRC_FILES))
TARGET-process-src-files-tags += $(call add-src-files-target-cflags, $(LOCAL_C99_FILES), -std=c99)

이것은 arm-linux-androideabi-4.6 툴체인과 함께 최신 NDKr8b에서 작동하지만, 향후 버전에서 작동할지 장담할 수 없으며 이전 버전에서 테스트하지 않았습니다.

저도 이 문제에 부딪혔습니다.하나의 라이너로 c와 c++를 컴파일하는 방법을 찾지 못했지만 autotools autoconf를 사용하면 각 .c와 .cpp 또는 .cc에 대해 적절한 구성과 Makefile을 생성하여 개별적으로 컴파일한 다음 연결합니다.https://www.gnu.org/software/automake/manual/html_node/Autotools-Introduction.html

gcc를 사용하는 대신 g++을 사용합니다.

이는 .cpp 파일과 .c 파일의 두 유형 모두에 대한 것입니다.

cpp를 corp에 포함시켜보고 g++을 사용해서 컴파일해보면 gnu가 자동으로 헤더 파일로 컴파일 할 것 같습니다.

언급URL : https://stackoverflow.com/questions/5430688/compiling-c-and-c-files-together-using-gcc