daniel-j-h / libosrmc

Pure C bindings for libosrm
MIT License
18 stars 8 forks source link

Linking issue, undefined reference to boost #9

Closed srimaln91 closed 5 years ago

srimaln91 commented 5 years ago

Hi, I'm getting below errors when I try to build sample bindings(osrm_c89.c)

user@user-pc:~/projects/libosrmc/bindings$ gcc -O2 -Wall -Wextra -pedantic -std=c89 osrm_c89.c -losrmc -o osrm_c89
//usr/local/lib/libosrmc.so: undefined reference to `boost::iostreams::mapped_file_source::data() const'
//usr/local/lib/libosrmc.so: undefined reference to `boost::filesystem::absolute(boost::filesystem::path const&, boost::filesystem::path const&)'
//usr/local/lib/libosrmc.so: undefined reference to `pthread_mutexattr_destroy'
//usr/local/lib/libosrmc.so: undefined reference to `pthread_create'
//usr/local/lib/libosrmc.so: undefined reference to `boost::detail::get_tss_data(void const*)'
//usr/local/lib/libosrmc.so: undefined reference to `boost::iostreams::mapped_file_source::mapped_file_source()'
//usr/local/lib/libosrmc.so: undefined reference to `sem_wait'
//usr/local/lib/libosrmc.so: undefined reference to `sem_init'
//usr/local/lib/libosrmc.so: undefined reference to `sem_destroy'
//usr/local/lib/libosrmc.so: undefined reference to `boost::filesystem::detail::current_path(boost::system::error_code*)'
//usr/local/lib/libosrmc.so: undefined reference to `boost::system::system_category()'
//usr/local/lib/libosrmc.so: undefined reference to `sem_post'
//usr/local/lib/libosrmc.so: undefined reference to `boost::iostreams::mapped_file_source::open_impl(boost::iostreams::basic_mapped_file_params<boost::iostreams::detail::path> const&)'
//usr/local/lib/libosrmc.so: undefined reference to `boost::filesystem::detail::temp_directory_path(boost::system::error_code*)'
//usr/local/lib/libosrmc.so: undefined reference to `pthread_mutexattr_setpshared'
//usr/local/lib/libosrmc.so: undefined reference to `boost::filesystem::detail::status(boost::filesystem::path const&, boost::system::error_code*)'
//usr/local/lib/libosrmc.so: undefined reference to `boost::system::generic_category()'
//usr/local/lib/libosrmc.so: undefined reference to `shm_open'
//usr/local/lib/libosrmc.so: undefined reference to `boost::detail::set_tss_data(void const*, boost::shared_ptr<boost::detail::tss_cleanup_function>, void*, bool)'
//usr/local/lib/libosrmc.so: undefined reference to `boost::filesystem::path::operator/=(boost::filesystem::path const&)'
//usr/local/lib/libosrmc.so: undefined reference to `pthread_mutex_timedlock'
//usr/local/lib/libosrmc.so: undefined reference to `boost::iostreams::mapped_file_source::flags() const'
//usr/local/lib/libosrmc.so: undefined reference to `boost::iostreams::mapped_file_source::size() const'
//usr/local/lib/libosrmc.so: undefined reference to `pthread_mutexattr_init'
collect2: error: ld returned 1 exit status

I would be really happy if comeone can help me to resolve this.

Thanks.

srimaln91 commented 5 years ago

I had to compile it with llibboost filesystem, iostreams, thread

gcc -O2 -Wall -Wextra -pedantic -std=c89 osrm_c89.c -losrmc -o osrm_c89 -lboost_filesystem -lboost_iostreams -lboost_thread
daniel-j-h commented 5 years ago

Check out pkg-config --libs libosrm