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
gcc
C 컴파일러이고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
'source' 카테고리의 다른 글
오라클 SQL 개발자 도구를 사용하여 테이블의 필드에 null 값을 설정하는 방법은 무엇입니까? (0) | 2023.08.18 |
---|---|
Spring Boot의 Primary/Secondary 페일오버 데이터 소스 (0) | 2023.08.18 |
URL에서 파일이 있는지 확인하는 방법 (0) | 2023.08.18 |
jdiv 내의 요소만 직렬화하기 위한 쿼리 (0) | 2023.08.18 |
시간을 병렬화할 수 있는 방법이 있습니까?바둑에서 효과적인 실행 시간을 지키면서 잠은 자나요? (0) | 2023.08.18 |