Programming/Linux Programming(6)
-
makefile 주요 문법
기본 문법allmakefile을 작성하고 console에서 make를 실행하면 기본적으로 "all:" 부분에 정의된 내용이 수행됩니다. 다음은 간단한 makefile의 예 입니다.OBJ = $(patsubst %c, %o, $(wildcard \*.c)) all : diary diary: $(OBJ) $(CC) -o $@ $^ 위와 같이 makefile을 작성한 뒤 다음과 같이 make를 실행합니다.~$ make 그럼 makefile이 위치한 폴더 내 모든 .c 파일들이 빌드되어 diary라는 파일을 생성합니다.make options -n, --just-print, --dry-run, --recon "No-op" The activity is to pr..
2025.01.03 -
cmake ctest 에서 test fail 시 log 출력
output-on-failure .../cmake/bin/ctest를 구동하면, cmake를 통해 등록한 test executable binary들이 실행됩니다. 이때 위와 같이 별다른 option을 지정하지 않고 실행하게 되면 pass/fail 정도의 결과만 출력됩니다. failure 발생 시 상세한 log들을 모두 출력하게 하고자 한다면, ctest 구동 시 다음과 같이 "--output-on-failure" option을 지정합니다. ctest --output-on-failure또는 환경 변수 설정을 통해 ctest가 구동되게 할 수도 있습니다. env CTEST\_OUTPUT\_ON\_FAILURE=1 make checkverbose ctest 수행 시 모든 log를 출력하게 하고자 한다면, "v..
2023.01.27 -
rdynamic
linker option rdynamic은 executable의 symbol을 노출합니다. 다음의 코드를 살펴보겠습니다. #include #include #include /* Obtain a backtrace and print it to stdout. */ void print_trace (void) { void *array[10]; size_t size; char **strings; size_t i; size = backtrace (array, 10); strings = backtrace_symbols (array, size); printf ("Obtained %zd stack frames.\n", size); for (i = 0; i < size; i++) printf ("%s\n", strings[i..
2023.01.19 -
libfmt fPIC로 build 하기
fmt/CMakeLists.txt에서 다음의 코드들을 추가합니다. 우선 가장 상단에 다음을 include 합니다. include(CheckCXXCompilerFlag) option을 추가합니다. ... option(FMT_SYSTEM_HEADERS "Expose headers with marking them as system." OFF) option(FMT_HAS_FPIC_FLAG "FPIC " ON)
2022.12.27 -
CMake에서 cross compiler 지정
다음과 같이 cmake에 define을 추가해서 compiler를 지정할 수 있습니다. ~/${CMAKE_PATH}/cmake -D CMAKE_C_COMPILER="/$(TOOLCHAIN_PATH)/gcc" -D CMAKE_CXX_COMPILER="/$(TOOLCHAIN_PATH)/g++" ./CMakeLists.txt 혹은 compiler 위치를 export 해 주는 방법도 있습니다. export CC=/${PATH}/gcc export CXX=/${PATH}/g++ cmake ./CMakeLists.txt 아니면 CMakeLists.txt 파일에 설정을 추가할 수도 있습니다. set(CMAKE_C_COMPILER "/${PATH}/gcc") set(CMAKE_CXX_COMPILER "/${PATH}/..
2022.10.06 -
gdbus] method 등록 및 호출
gdbus call 1) registration a. generate gdbus wrapping code ex. com.test.module1.xml gdbus-codegen --generate-c-code testbus --c-namespace TestBus --interface-prefix com.test. com.test.module1.xml -> testbus.c/h b. build FLAGS=$(shell pkg-config --libs --cflags gio-2.0 gio-unix-2.0 glib-2.0) server: server.o testbus.o gcc -o $@ $^ $(FLAGS) client: client.o testbus.o gcc -o $@ $^ $(FLAGS) gcc -o t..
2021.09.27