Fix ld error due to debian/ubuntu -pie default
authorRyan Tomayko <r@tomayko.com>
Mon, 5 Jun 2017 17:43:46 +0000 (17:43 +0000)
committerSasha Goldshtein <goldshtn@gmail.com>
Thu, 8 Jun 2017 01:08:51 +0000 (04:08 +0300)
Fixes #782. Solution taken verbatim from @jepio here:

https://github.com/iovisor/bcc/issues/782#issuecomment-259075010

I ran into the same issue attempting to compile from source on
a fresh Ubuntu 16.10/Yakkety host:

Linking C executable bcc-lua
/usr/bin/ld: libluajit-5.1.a(ljamalg.o): relocation R_X86_64_32S
    against `.rodata' can not be used when making a shared object;
    recompile with -fPIC
/usr/bin/ld: final link failed: Nonrepresentable section on output

Build succeeded after patch was applied.

src/lua/CMakeLists.txt

index 97e2bb40a43428fa3606afce6fed3e6822cf644a..6ad0e874f4cfcb604ec9a30a95d20ad42f3bc2b7 100644 (file)
@@ -24,6 +24,7 @@ if (LUAJIT_LIBRARIES AND LUAJIT)
        set_target_properties(bcc-lua PROPERTIES LINKER_LANGUAGE C)
        target_link_libraries(bcc-lua ${LUAJIT_LIBRARIES})
        target_link_libraries(bcc-lua -Wl,--whole-archive bcc-static -Wl,--no-whole-archive)
+       target_link_libraries(bcc-lua -no-pie)
 
        install(TARGETS bcc-lua RUNTIME DESTINATION bin)
 endif()