Skip to content

Compile a static executable #26

@fedemengo

Description

@fedemengo

Although the repo is not maintained anymore I was wondering if you could help me figure out a linking error I'm having.
,I'm trying to compile a C++ project statically that uses DockerClientpp so I run

g++ -static obj1.o obj2.o obj3.o obj4.o obj5.o -larchive -lz -lbz2 -llzma -lDockerClientpp

But I get a series of undefined references

deps/DockerClientpp/build/lib/libDockerClientpp.a(Archive.cpp.o): In function `DockerClientpp::Utility::Archive::Impl::writeEntry(archive*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
test/deps/DockerClientpp/src/Archive.cpp:97: undefined reference to `archive_entry_new'
test/deps/DockerClientpp/src/Archive.cpp:98: undefined reference to `archive_entry_copy_stat'
test/deps/DockerClientpp/src/Archive.cpp:100: undefined reference to `archive_entry_set_pathname'
test/deps/DockerClientpp/src/Archive.cpp:102: undefined reference to `archive_write_header'
test/deps/DockerClientpp/src/Archive.cpp:108: undefined reference to `archive_write_data'
test/deps/DockerClientpp/src/Archive.cpp:112: undefined reference to `archive_entry_free'
deps/DockerClientpp/build/lib/libDockerClientpp.a(Archive.cpp.o): In function `DockerClientpp::Utility::Archive::Impl::writeToFd(int)':
test/deps/DockerClientpp/src/Archive.cpp:49: undefined reference to `archive_write_new'
test/deps/DockerClientpp/src/Archive.cpp:51: undefined reference to `archive_write_set_format_pax_restricted'
test/deps/DockerClientpp/src/Archive.cpp:53: undefined reference to `archive_write_open_fd'
test/deps/DockerClientpp/src/Archive.cpp:64: undefined reference to `archive_write_free'
deps/DockerClientpp/build/lib/libDockerClientpp.a(Archive.cpp.o): In function `DockerClientpp::Utility::Archive::Impl::getTar[abi:cxx11]()':
test/deps/DockerClientpp/src/Archive.cpp:71: undefined reference to `archive_write_new'
test/deps/DockerClientpp/src/Archive.cpp:73: undefined reference to `archive_write_set_format_pax_restricted'
test/deps/DockerClientpp/src/Archive.cpp:75: undefined reference to `archive_write_open'
test/deps/DockerClientpp/src/Archive.cpp:86: undefined reference to `archive_write_free'
deps/DockerClientpp/build/lib/libDockerClientpp.a(Archive.cpp.o): In function `DockerClientpp::Utility::Archive::Impl::writeContentToDisk(archive*, archive*)':
test/deps/DockerClientpp/src/Archive.cpp:179: undefined reference to `archive_write_data_block'
test/deps/DockerClientpp/src/Archive.cpp:175: undefined reference to `archive_read_data_block'
deps/DockerClientpp/build/lib/libDockerClientpp.a(Archive.cpp.o): In function `DockerClientpp::Utility::Archive::Impl::extractTar(std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)':
test/deps/DockerClientpp/src/Archive.cpp:144: undefined reference to `archive_read_new'
test/deps/DockerClientpp/src/Archive.cpp:145: undefined reference to `archive_read_support_format_all'
test/deps/DockerClientpp/src/Archive.cpp:147: undefined reference to `archive_write_disk_new'
test/deps/DockerClientpp/src/Archive.cpp:148: undefined reference to `archive_write_disk_set_options'
test/deps/DockerClientpp/src/Archive.cpp:149: undefined reference to `archive_write_disk_set_standard_lookup'
test/deps/DockerClientpp/src/Archive.cpp:151: undefined reference to `archive_read_open_memory'
test/deps/DockerClientpp/src/Archive.cpp:155: undefined reference to `archive_entry_set_pathname'
test/deps/DockerClientpp/src/Archive.cpp:157: undefined reference to `archive_write_header'
test/deps/DockerClientpp/src/Archive.cpp:158: undefined reference to `archive_entry_size'
test/deps/DockerClientpp/src/Archive.cpp:161: undefined reference to `archive_write_finish_entry'
test/deps/DockerClientpp/src/Archive.cpp:153: undefined reference to `archive_read_next_header'
test/deps/DockerClientpp/src/Archive.cpp:156: undefined reference to `archive_entry_pathname'
test/deps/DockerClientpp/src/Archive.cpp:163: undefined reference to `archive_read_close'
test/deps/DockerClientpp/src/Archive.cpp:164: undefined reference to `archive_read_free'
test/deps/DockerClientpp/src/Archive.cpp:165: undefined reference to `archive_write_close'
test/deps/DockerClientpp/src/Archive.cpp:166: undefined reference to `archive_write_free'
collect2: error: ld returned 1 exit status

I was thinking that maybe I should change something in the CMakeLists.txt to compile all the libraries statically but I'm not sure what.

Any suggestion is highly appreciated

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions