[CMake] undefined reference to `_exit'
Kyle Edwards
kyle.edwards at kitware.com
Fri Feb 1 18:17:43 EST 2019
Hex,
Can you see what else is in /opt/arm-none-eabi/lib/thumb/v7-
ar/fpv3/hard (the same directory as libc.a)? There might be another
system library that contains the _exit() implementation that isn't
being linked due to your use of the -nostartfiles flag.
Kyle
On Fri, 2019-02-01 at 22:15 +0000, hex wrote:
> hello,
> I am trying to include a static library that contains the startup
> code for ARM processor to my CMake project for cross compilation.
> I included the linker script and added it to the executable. Flags
> and include files are properly set in the CMake build output. The
> path to the library is also correctly seen.
> The linker fails on the startup code:
>
> Scanning dependencies of target testApp
> [ 50%] Building CXX object CMakeFiles/testApp.dir/src/main.c.obj
> [100%] Linking CXX executable testApp
> /opt/gcc-arm-none-eabi-7-2017-q4-major/bin/../lib/gcc/arm-none-
> eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7-
> ar/fpv3/hard/libc.a(lib_a-exit.o): In function `exit':
> exit.c:(.text.exit+0x1c): undefined reference to `_exit'
> /opt/gcc-arm-none-eabi-7-2017-q4-major/bin/../lib/gcc/arm-none-
> eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7-
> ar/fpv3/hard/libc.a(lib_a-fini.o): In function `__libc_fini_array':
> fini.c:(.text.__libc_fini_array+0x2c): undefined reference to `_fini'
> /opt/gcc-arm-none-eabi-7-2017-q4-major/bin/../lib/gcc/arm-none-
> eabi/7.2.1/../../../../arm-none-eabi/lib/thumb/v7-
> ar/fpv3/hard/libc.a(lib_a-init.o): In function `__libc_init_array':
> init.c:(.text.__libc_init_array+0x38): undefined reference to `_init'
> collect2: error: ld returned 1 exit status
>
>
> Here is my CMakeLists file:
>
> cmake_minimum_required(VERSION 3.5.1)
> project (hello-world)
>
> set(SOURCE_FILES src/main.c)
>
> set (LINKER_SCRIPT linker_script.ld)
>
> add_executable(${TARGET_NAME} ${SOURCE_FILES})
>
> set_target_properties( ${TARGET_NAME} PROPERTIES LINK_DEPENDS
> ${LINKER_SCRIPT})
>
> set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -Wl,-build-
> id=none -Wl,-T ${LINKER_SCRIPT} " CACHE STRING "" FORCE )
>
> set(COMMON_FLAGS "${COMMON_FLAGS} -march=armv7-a")
> set(COMMON_FLAGS "${COMMON_FLAGS} -mfpu=vfpv3")
> set(COMMON_FLAGS "${COMMON_FLAGS} -mfloat-abi=hard")
> set(COMMON_FLAGS "${COMMON_FLAGS} -Wall")
> set(COMMON_FLAGS "${COMMON_FLAGS} -O0")
> set(COMMON_FLAGS "${COMMON_FLAGS} -nostartfiles")
> set(COMMON_FLAGS "${COMMON_FLAGS} -fmessage-length=0")
> set(COMMON_FLAGS "${COMMON_FLAGS} -fno-exceptions")
> set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${COMMON_FLAGS}")
> set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${COMMON_FLAGS}")
>
> include_directories( inc )
>
> find_library(LIB_C NAMES libc PATHS "lib" )
>
> target_link_libraries(${TARGET_NAME} ${LIB_C})
>
>
> How can I solve this problem? The only dependency here is the library
> itself...
>
> Thank you in advance for any response.
> --
>
> Powered by www.kitware.com
>
> Please keep messages on-topic and check the CMake FAQ at: http://www.
> cmake.org/Wiki/CMake_FAQ
>
> Kitware offers various services to support the CMake community. For
> more information on each offering, please visit:
>
> CMake Support: http://cmake.org/cmake/help/support.html
> CMake Consulting: http://cmake.org/cmake/help/consulting.html
> CMake Training Courses: http://cmake.org/cmake/help/training.html
>
> Visit other Kitware open-source projects at http://www.kitware.com/op
> ensource/opensource.html
>
> Follow this link to subscribe/unsubscribe:
> https://cmake.org/mailman/listinfo/cmake
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://cmake.org/pipermail/cmake/attachments/20190201/4425b80f/attachment-0001.html>
More information about the CMake
mailing list