저는 Debian 12에서 GTKlibrary를 기반으로 C 애플리케이션을 작성하고 있습니다.
이 프로그램은 cmake에 의해 생성된 Makefile로 구축되었습니다.
소스 파일의 컴파일 단계는 정확하지만 링커가 트리거되면 다음 오류가 발생합니다.
[ 3%] Linking C executable lux
cc: error: -E or -x required when input is from standard input
CMakeLists.txt 파일은 다음과 같습니다.
# Set the name and the supported language of the project
PROJECT(Lux C)
# Set the minimum version of cmake required to build this project
CMAKE_MINIMUM_REQUIRED(VERSION 3.10 FATAL_ERROR)
# Use the package PkgConfig to detect GTK+ headers/library files
FIND_PACKAGE(PkgConfig REQUIRED)
PKG_CHECK_MODULES(GTK3 REQUIRED gtk+-3.0)
set ( ORACLE_LIBS "-locci -lclntsh")
set ( ORACLE_DIR "/opt/oracle/instantclient_19_20")
# Setup CMake to use GTK+, tell the compiler where to look for headers
# and to the linker where to look for libraries
INCLUDE_DIRECTORIES(${GTK3_INCLUDE_DIRS} ./include ./websocket/include ${ORACLE_DIR}/sdk/include/)
LINK_DIRECTORIES(${GTK3_LIBRARY_DIRS} ${ORACLE_DIR})
# Add other flags to the compiler
ADD_DEFINITIONS(${GTK3_CFLAGS_OTHER})
# Add an executable compiled from *.c
ADD_EXECUTABLE( lux
main.c log.c
...
dbOracle.c
)
# Link the target to the GTK+ libraries
TARGET_LINK_LIBRARIES(lux ${GTK3_LIBRARIES} -lmysqlclient -lcurl -lpthread ${ORACLE_LIBS})
add_compile_options( -rdynamic )
나는 깃발을 직접 통제할 수 없다...