1

I am finding it very difficult to link library to my code executable using meson build. I have explored through the internet and could not find solution to my problem.

I have the following project structure

$ find ~/src
src/
src/meson.build
src/streamer/
src/streamer/stream.cpp
src/streamer/stream.h
src/streamer/utility.cpp
src/streamer/utility.h
src/streamer/meson.build
src/logger/
src/logger/logger.c
src/logger/logger.h
src/logger/meson.build

I have a logging function defined in logger.c which is called in my stream.cpp for logging purpose. However while linking the files, I get the following error:

Linking target streamer/stream
FAILED: streamer/stream 
c++  -o streamer/stream streamer/stream.p/stream.cpp.o streamer/stream.p/utility.cpp.o -Wl,--as-needed -Wl,--no-undefined '-Wl,-rpath,$ORIGIN/../logger' -Wl,-rpath-link,/home/ashish/Documents/Integrated_28012022/Project/build/logger -Wl,--start-group logger/liblogger.so /usr/local/lib/x86_64-linux-gnu/libgstreamer-1.0.so /usr/lib/x86_64-linux-gnu/libgobject-2.0.so /usr/lib/x86_64-linux-gnu/libglib-2.0.so /usr/local/lib/x86_64-linux-gnu/libgstrtspserver-1.0.so /usr/local/lib/x86_64-linux-gnu/libgstbase-1.0.so -pthread /usr/lib/x86_64-linux-gnu/libjsoncpp.so -Wl,--end-group
streamer/stream.p/stream.cpp.o: In function `read_config_data()':
/home/ashish/Documents/Integrated_28012022/Project/build/../streamer/stream.cpp:361: undefined reference to `SYSLOG_DEBUG(char*)'

I am calling the logger.h file in my stream.cpp. I have also checked for the function existence using the command readelf -sW liblogger.so which confirms that the function is present in the library. I am unable to rectify where it is going wrong.

The src/meson.build is defined as below:

project('stream', 'c','cpp', version : '1.18.0.1', license : 'LGPL')

cc = meson.get_compiler('cpp')
c = meson.get_compiler('c')

gst_version = meson.project_version()

api_version = '1.0'

gst_dep = dependency('gstreamer-1.0',
    fallback : ['gstreamer', 'gst_dep'])
gstrtsp_dep = dependency('gstreamer-rtsp-server-1.0',
  fallback : ['gst-plugins-base', 'rtsp_dep'])
thread_dep = dependency('threads')
json_dep = dependency('jsoncpp')

subdir('logger')
subdir('streamer')

The src/streamer/meson.build is defined as below:

app_sources = [
  'stream.cpp',
  'utility.cpp',
  ]
  
logger_inc = include_directories('../logger/')

executable('stream', app_sources, dependencies : [gst_dep, gstrtsp_dep, thread_dep, json_dep, logger_dep], include_directories : logger_inc)

And finally my src/logger/meson.build is defined as below:

logger = library('logger', sources : ['logger.c'])

logger_dep = declare_dependency(include_directories : include_directories('.'), link_with : logger)

Could someone please help me rectify this issue.

TheLazy
  • 253
  • 1
  • 15

0 Answers0