View Issue Details Jump to Notes ] Print ]
IDProjectCategoryView StatusDate SubmittedLast Update
0015699CMakeCMakepublic2015-08-16 07:072016-01-04 11:52
Reporterpavel.odintsov 
Assigned To 
PrioritynormalSeverityminorReproducibilityalways
StatusclosedResolutionsuspended 
Platformx86_64OSLinuxOS VersionDebian 8
Product VersionCMake 3.0 
Target VersionFixed in Version 
Summary0015699: Link project to custom libc version installed in /opt without bothering system
DescriptionHello, folks!

I'm trying to build my application project which links to custom libc version installed in /opt.

I have installed glibc 2.22 and gcc 5.2.2 in /opt.

And I have following cmake file:

cmake_minimum_required (VERSION 2.8)

project(MyProject)

# Run this code this way:
# cd build
# cmake -DCMAKE_C_COMPILER=/opt/gcc520/bin/gcc -DCMAKE_CXX_COMPILER=/opt/gcc520/bin/g++ ..

set(CMAKE_BUILD_TYPE Release)

set(CMAKE_C_COMPILER "/opt/gcc520/bin/gcc")
set(CMAKE_CXX_COMPILER "/opt/gcc520/bin/g++")

# Remove all standard path's
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "")
set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "")
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "")

# Specify path's to custom compiled gcc and glibc
set(CMAKE_CXX_IMPLICIT_LINK_LIBRARIES "stdc++;gcc;gcc_s;m;c")
set(CMAKE_CXX_IMPLICIT_INCLUDE_DIRECTORIES "/opt/glibc_2.22/include")
set(CMAKE_CXX_IMPLICIT_LINK_DIRECTORIES "/opt/glibc_2.22/lib;/opt/gcc520/lib64;/opt/glibc_2.22/lib;/opt/gcc520/lib/gcc/x86_64-unknown-linux-gnu/5.2.0")

set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -std=c++11")

# Specify custom ld-linux dynamic linker path
set(CMAKE_CXX_FLAGS_RELEASE "${CMAKE_CXX_FLAGS_RELEASE} -Wl,--dynamic-linker=/opt/glibc_2.22/lib/ld-linux-x86-64.so.2")

# Specify full RPATH for build tree
SET(CMAKE_SKIP_BUILD_RPATH FALSE)

# Create builds in current folder with install RPATH
SET(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE)

SET(CMAKE_INSTALL_RPATH "/opt/gcc520/lib64;/opt/glibc_2.22/lib")

add_executable(suxx suxx.cpp)

So when I'm running this manifest it still uses system includes/libraries. But It should not do it.

I could offer strace of make command here:

strace -s 1024 -f -etrace=execve make
execve("/usr/bin/make", ["make"], [/* 24 vars */]) = 0
Process 13613 attached
[pid 13613] execve("/usr/bin/cmake", ["/usr/bin/cmake", "-H/root/cmake_custom_libc", "-B/root/cmake_custom_libc/build", "--check-build-system", "CMakeFiles/Makefile.cmake", "0"], [/* 27 vars */]) = 0
[pid 13613] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13613, si_uid=0, si_status=0, si_utime=1, si_stime=0} ---
Process 13614 attached
[pid 13614] execve("/usr/bin/cmake", ["/usr/bin/cmake", "-E", "cmake_progress_start", "/root/cmake_custom_libc/build/CMakeFiles", "/root/cmake_custom_libc/build/CMakeFiles/progress.marks"], [/* 27 vars */]) = 0
[pid 13614] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13614, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
Process 13615 attached
[pid 13615] execve("/usr/local/sbin/make", ["make", "-f", "CMakeFiles/Makefile2", "all"], [/* 27 vars */]) = -1 ENOENT (No such file or directory)
[pid 13615] execve("/usr/local/bin/make", ["make", "-f", "CMakeFiles/Makefile2", "all"], [/* 27 vars */]) = -1 ENOENT (No such file or directory)
[pid 13615] execve("/usr/sbin/make", ["make", "-f", "CMakeFiles/Makefile2", "all"], [/* 27 vars */]) = -1 ENOENT (No such file or directory)
[pid 13615] execve("/usr/bin/make", ["make", "-f", "CMakeFiles/Makefile2", "all"], [/* 27 vars */]) = 0
Process 13616 attached
[pid 13616] execve("/usr/local/sbin/make", ["make", "-f", "CMakeFiles/suxx.dir/build.make", "CMakeFiles/suxx.dir/depend"], [/* 27 vars */]) = -1 ENOENT (No such file or directory)
[pid 13616] execve("/usr/local/bin/make", ["make", "-f", "CMakeFiles/suxx.dir/build.make", "CMakeFiles/suxx.dir/depend"], [/* 27 vars */]) = -1 ENOENT (No such file or directory)
[pid 13616] execve("/usr/sbin/make", ["make", "-f", "CMakeFiles/suxx.dir/build.make", "CMakeFiles/suxx.dir/depend"], [/* 27 vars */]) = -1 ENOENT (No such file or directory)
[pid 13616] execve("/usr/bin/make", ["make", "-f", "CMakeFiles/suxx.dir/build.make", "CMakeFiles/suxx.dir/depend"], [/* 27 vars */]) = 0
Process 13617 attached
[pid 13617] execve("/bin/sh", ["/bin/sh", "-c", "cd /root/cmake_custom_libc/build && /usr/bin/cmake -E cmake_depends \"Unix Makefiles\" /root/cmake_custom_libc /root/cmake_custom_libc /root/cmake_custom_libc/build /root/cmake_custom_libc/build /root/cmake_custom_libc/build/CMakeFiles/suxx.dir/DependInfo.cmake --color="], [/* 27 vars */]) = 0
Process 13618 attached
[pid 13618] execve("/usr/bin/cmake", ["/usr/bin/cmake", "-E", "cmake_depends", "Unix Makefiles", "/root/cmake_custom_libc", "/root/cmake_custom_libc", "/root/cmake_custom_libc/build", "/root/cmake_custom_libc/build", "/root/cmake_custom_libc/build/CMakeFiles/suxx.dir/DependInfo.cmake", "--color="], [/* 27 vars */]) = 0
[pid 13618] +++ exited with 0 +++
[pid 13617] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13618, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
[pid 13617] +++ exited with 0 +++
[pid 13616] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13617, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
[pid 13616] +++ exited with 0 +++
[pid 13615] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13616, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
Process 13619 attached
[pid 13619] execve("/usr/local/sbin/make", ["make", "-f", "CMakeFiles/suxx.dir/build.make", "CMakeFiles/suxx.dir/build"], [/* 27 vars */]) = -1 ENOENT (No such file or directory)
[pid 13619] execve("/usr/local/bin/make", ["make", "-f", "CMakeFiles/suxx.dir/build.make", "CMakeFiles/suxx.dir/build"], [/* 27 vars */]) = -1 ENOENT (No such file or directory)
[pid 13619] execve("/usr/sbin/make", ["make", "-f", "CMakeFiles/suxx.dir/build.make", "CMakeFiles/suxx.dir/build"], [/* 27 vars */]) = -1 ENOENT (No such file or directory)
[pid 13619] execve("/usr/bin/make", ["make", "-f", "CMakeFiles/suxx.dir/build.make", "CMakeFiles/suxx.dir/build"], [/* 27 vars */]) = 0
Process 13620 attached
[pid 13620] execve("/usr/bin/cmake", ["/usr/bin/cmake", "-E", "cmake_progress_report", "/root/cmake_custom_libc/build/CMakeFiles", "1"], [/* 27 vars */]) = 0
[100%] [pid 13620] +++ exited with 0 +++
[pid 13619] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13620, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
Process 13621 attached
[pid 13621] execve("/bin/sh", ["/bin/sh", "-c", "/usr/bin/cmake -E cmake_echo_color --switch= --green \"Building CXX object CMakeFiles/suxx.dir/suxx.cpp.o\""], [/* 27 vars */]) = 0
Process 13622 attached
[pid 13622] execve("/usr/bin/cmake", ["/usr/bin/cmake", "-E", "cmake_echo_color", "--switch=", "--green", "Building CXX object CMakeFiles/suxx.dir/suxx.cpp.o"], [/* 27 vars */]) = 0
Building CXX object CMakeFiles/suxx.dir/suxx.cpp.o
[pid 13622] +++ exited with 0 +++
[pid 13621] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13622, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
[pid 13621] +++ exited with 0 +++
[pid 13619] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13621, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
Process 13623 attached
[pid 13623] execve("/opt/gcc520/bin/g++", ["/opt/gcc520/bin/g++", "-O3", "-DNDEBUG", "-std=c++11", "-Wl,--dynamic-linker=/opt/glibc_2.22/lib/ld-linux-x86-64.so.2", "-o", "CMakeFiles/suxx.dir/suxx.cpp.o", "-c", "/root/cmake_custom_libc/suxx.cpp"], [/* 27 vars */]) = 0
Process 13624 attached
[pid 13624] execve("/opt/gcc520/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/cc1plus", ["/opt/gcc520/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/cc1plus", "-quiet", "-imultiarch", "x86_64-linux-gnu", "-D_GNU_SOURCE", "-D", "NDEBUG", "/root/cmake_custom_libc/suxx.cpp", "-quiet", "-dumpbase", "suxx.cpp", "-mtune=generic", "-march=x86-64", "-auxbase-strip", "CMakeFiles/suxx.dir/suxx.cpp.o", "-O3", "-std=c++11", "-o", "/tmp/ccQUQdy0.s"], [/* 29 vars */]) = 0
[pid 13624] +++ exited with 0 +++
[pid 13623] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13624, si_uid=0, si_status=0, si_utime=16, si_stime=2} ---
Process 13625 attached
[pid 13625] execve("/usr/local/sbin/as", ["as", "--64", "-o", "CMakeFiles/suxx.dir/suxx.cpp.o", "/tmp/ccQUQdy0.s"], [/* 29 vars */]) = -1 ENOENT (No such file or directory)
[pid 13625] execve("/usr/local/bin/as", ["as", "--64", "-o", "CMakeFiles/suxx.dir/suxx.cpp.o", "/tmp/ccQUQdy0.s"], [/* 29 vars */]) = -1 ENOENT (No such file or directory)
[pid 13625] execve("/usr/sbin/as", ["as", "--64", "-o", "CMakeFiles/suxx.dir/suxx.cpp.o", "/tmp/ccQUQdy0.s"], [/* 29 vars */]) = -1 ENOENT (No such file or directory)
[pid 13625] execve("/usr/bin/as", ["as", "--64", "-o", "CMakeFiles/suxx.dir/suxx.cpp.o", "/tmp/ccQUQdy0.s"], [/* 29 vars */]) = 0
[pid 13625] +++ exited with 0 +++
[pid 13623] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13625, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
[pid 13623] +++ exited with 0 +++
[pid 13619] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13623, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
Process 13626 attached
[pid 13626] execve("/bin/sh", ["/bin/sh", "-c", "/usr/bin/cmake -E cmake_echo_color --switch= --red --bold \"Linking CXX executable suxx\""], [/* 27 vars */]) = 0
Process 13627 attached
[pid 13627] execve("/usr/bin/cmake", ["/usr/bin/cmake", "-E", "cmake_echo_color", "--switch=", "--red", "--bold", "Linking CXX executable suxx"], [/* 27 vars */]) = 0
Linking CXX executable suxx
[pid 13627] +++ exited with 0 +++
[pid 13626] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13627, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
[pid 13626] +++ exited with 0 +++
[pid 13619] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13626, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
Process 13628 attached
[pid 13628] execve("/usr/bin/cmake", ["/usr/bin/cmake", "-E", "cmake_link_script", "CMakeFiles/suxx.dir/link.txt", "--verbose="], [/* 27 vars */]) = 0
Process 13629 attached
[pid 13629] execve("/opt/gcc520/bin/g++", ["/opt/gcc520/bin/g++", "-O3", "-DNDEBUG", "-std=c++11", "-Wl,--dynamic-linker=/opt/glibc_2.22/lib/ld-linux-x86-64.so.2", "CMakeFiles/suxx.dir/suxx.cpp.o", "-o", "suxx", "-rdynamic", "-Wl,-rpath,/opt/gcc520/lib64:/opt/glibc_2.22/lib"], [/* 27 vars */]) = 0
Process 13630 attached
[pid 13630] execve("/opt/gcc520/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/collect2", ["/opt/gcc520/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/collect2", "-plugin", "/opt/gcc520/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/liblto_plugin.so", "-plugin-opt=/opt/gcc520/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/lto-wrapper", "-plugin-opt=-fresolution=/tmp/ccvXyPTt.res", "-plugin-opt=-pass-through=-lgcc_s", "-plugin-opt=-pass-through=-lgcc", "-plugin-opt=-pass-through=-lc", "-plugin-opt=-pass-through=-lgcc_s", "-plugin-opt=-pass-through=-lgcc", "--eh-frame-hdr", "-m", "elf_x86_64", "-export-dynamic", "-dynamic-linker", "/lib64/ld-linux-x86-64.so.2", "-o", "suxx", "/usr/lib/x86_64-linux-gnu/crt1.o", "/usr/lib/x86_64-linux-gnu/crti.o", "/opt/gcc520/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/crtbegin.o", "-L/opt/gcc520/lib/gcc/x86_64-unknown-linux-gnu/5.2.0", "-L/opt/gcc520/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../lib64", "-L/lib/x86_64-linux-gnu", "-L/lib/../lib64", "-L/usr/lib/x86_64-linux-gnu", "-L/opt/gcc520/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/../../..", "--dynamic-linker=/opt/glibc_2.22/lib/ld-linux-x86-64.so.2", "CMakeFiles/suxx.dir/suxx.cpp.o", "-rpath", "/opt/gcc520/lib64:/opt/glibc_2.22/lib", "-lstdc++", "-lm", "-lgcc_s", "-lgcc", "-lc", "-lgcc_s", "-lgcc", "/opt/gcc520/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/crtend.o", "/usr/lib/x86_64-linux-gnu/crtn.o"], [/* 32 vars */]) = 0
Process 13631 attached
[pid 13631] execve("/usr/bin/ld", ["/usr/bin/ld", "-plugin", "/opt/gcc520/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/liblto_plugin.so", "-plugin-opt=/opt/gcc520/libexec/gcc/x86_64-unknown-linux-gnu/5.2.0/lto-wrapper", "-plugin-opt=-fresolution=/tmp/ccvXyPTt.res", "-plugin-opt=-pass-through=-lgcc_s", "-plugin-opt=-pass-through=-lgcc", "-plugin-opt=-pass-through=-lc", "-plugin-opt=-pass-through=-lgcc_s", "-plugin-opt=-pass-through=-lgcc", "--eh-frame-hdr", "-m", "elf_x86_64", "-export-dynamic", "-dynamic-linker", "/lib64/ld-linux-x86-64.so.2", "-o", "suxx", "/usr/lib/x86_64-linux-gnu/crt1.o", "/usr/lib/x86_64-linux-gnu/crti.o", "/opt/gcc520/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/crtbegin.o", "-L/opt/gcc520/lib/gcc/x86_64-unknown-linux-gnu/5.2.0", "-L/opt/gcc520/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/../../../../lib64", "-L/lib/x86_64-linux-gnu", "-L/lib/../lib64", "-L/usr/lib/x86_64-linux-gnu", "-L/opt/gcc520/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/../../..", "--dynamic-linker=/opt/glibc_2.22/lib/ld-linux-x86-64.so.2", "CMakeFiles/suxx.dir/suxx.cpp.o", "-rpath", "/opt/gcc520/lib64:/opt/glibc_2.22/lib", "-lstdc++", "-lm", "-lgcc_s", "-lgcc", "-lc", "-lgcc_s", "-lgcc", "/opt/gcc520/lib/gcc/x86_64-unknown-linux-gnu/5.2.0/crtend.o", "/usr/lib/x86_64-linux-gnu/crtn.o"], [/* 32 vars */]) = 0
[pid 13631] +++ exited with 0 +++
[pid 13630] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13631, si_uid=0, si_status=0, si_utime=2, si_stime=1} ---
[pid 13630] +++ exited with 0 +++
[pid 13629] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13630, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
[pid 13629] +++ exited with 0 +++
[pid 13628] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13629, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
[pid 13628] +++ exited with 0 +++
[pid 13619] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13628, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
[pid 13619] +++ exited with 0 +++
[pid 13615] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13619, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
Process 13632 attached
[pid 13632] execve("/usr/bin/cmake", ["/usr/bin/cmake", "-E", "cmake_progress_report", "/root/cmake_custom_libc/build/CMakeFiles", "1"], [/* 27 vars */]) = 0
[100%] [pid 13632] +++ exited with 0 +++
[pid 13615] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13632, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
Process 13633 attached
[pid 13633] execve("/bin/sh", ["/bin/sh", "-c", "echo \"Built target suxx\""], [/* 27 vars */]) = 0
Built target suxx
[pid 13633] +++ exited with 0 +++
[pid 13615] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13633, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
[pid 13615] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13615, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
Process 13634 attached
[pid 13634] execve("/usr/bin/cmake", ["/usr/bin/cmake", "-E", "cmake_progress_start", "/root/cmake_custom_libc/build/CMakeFiles", "0"], [/* 27 vars */]) = 0
[pid 13634] +++ exited with 0 +++
--- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=13634, si_uid=0, si_status=0, si_utime=0, si_stime=0} ---
+++ exited with 0 +++


So could you recommend how I can build my project without anything from my system at all? I need all code and libraries from /opt.

Thanks!
TagsNo tags attached.
Attached Files

 Relationships

  Notes
(0039284)
pavel.odintsov (reporter)
2015-08-16 07:09

So this binary compiles correctly.

It links with custom libc:
ldd suxx
    linux-vdso.so.1 (0x00007fff7fb84000)
    libstdc++.so.6 => /opt/gcc520/lib64/libstdc++.so.6 (0x00007f7c004a7000)
    libm.so.6 => /opt/glibc_2.22/lib/libm.so.6 (0x00007f7c001a8000)
    libgcc_s.so.1 => /opt/gcc520/lib64/libgcc_s.so.1 (0x00007f7bfff91000)
    libc.so.6 => /opt/glibc_2.22/lib/libc.so.6 (0x00007f7bffbec000)
    /opt/glibc_2.22/lib/ld-linux-x86-64.so.2 => /lib64/ld-linux-x86-64.so.2 (0x00007f7c00823000)

readelf --headers suxx |grep interpreter
      [Requesting program interpreter: /opt/glibc_2.22/lib/ld-linux-x86-64.so.2]

But I wan't to get rid all libs/includes related to host system itself because I'm building cross code.

And I saw so much paths like this:
"/usr/lib/x86_64-linux-gnu/crt1.o", "/usr/lib/x86_64-linux-gnu/crti.o",

And haven't any idea hot to disable they with cmake.
(0039289)
Brad King (manager)
2015-08-17 09:35

> But I wan't to get rid all libs/includes related to host system itself because I'm building cross code.

See here for documentation on cross compiling:

 http://www.cmake.org/cmake/help/v3.3/manual/cmake-toolchains.7.html#cross-compiling [^]
 http://www.cmake.org/Wiki/CMake_Cross_Compiling [^]

This discussion is better suited for the mailing list:

 http://www.cmake.org/mailman/listinfo/cmake [^]

so I'm resolving the issue here.
(0040115)
Robert Maynard (manager)
2016-01-04 11:52

Closing resolved issues that have not been updated in more than 4 months.

 Issue History
Date Modified Username Field Change
2015-08-16 07:07 pavel.odintsov New Issue
2015-08-16 07:09 pavel.odintsov Note Added: 0039284
2015-08-17 09:35 Brad King Note Added: 0039289
2015-08-17 09:35 Brad King Status new => resolved
2015-08-17 09:35 Brad King Resolution open => suspended
2016-01-04 11:52 Robert Maynard Note Added: 0040115
2016-01-04 11:52 Robert Maynard Status resolved => closed


Copyright © 2000 - 2018 MantisBT Team