Dushistov / sdcv

https://dushistov.github.io/sdcv/
GNU General Public License v2.0
294 stars 42 forks source link

link error on netbsd #39

Open sw2wolf opened 6 years ago

sw2wolf commented 6 years ago

~/sdcv-0.5.2/obj $ cmake .. ~/sdcv-0.5.2/obj $ make
[ 12%] Linking CXX executable sdcv
ld: cannot find -lglib-2.0
...... ~/sdcv-0.5.2/obj $ pkg-config --libs glib-2.0 -L/usr/pkg/lib -Wl,-R/usr/pkg/lib -lglib-2.0 -lintl

~/sdcv-0.5.2/obj $ ls /usr/pkg/lib | grep -i glib glib-2.0 libdbus-glib-1.a libdbus-glib-1.la libdbus-glib-1.so libdbus-glib-1.so.2 libdbus-glib-1.so.2.3.3 libglib-2.0.a libglib-2.0.la libglib-2.0.so libglib-2.0.so.0 libglib-2.0.so.0.5200.3

Regards!

Dushistov commented 6 years ago

@sw2wolf thanks for report, can you run

~/sdcv-0.5.2/obj $ make

in such way make VERBOSE=1 and post output here?

Frenzie commented 6 years ago

CMake is terrible at finding libraries. You can pass something like -DGLIB2_INCLUDE_DIRS=/wherever and -DGLIB2_LIBRARIES=/usr/pkg/lib/libglib-2.0.so to beat it into submission.

sw2wolf commented 6 years ago

Do you mean make -DGLIB2_LIBRARIES=/usr/pkg/lib/libglib-2.0.so ... ? If so , same error !

Frenzie commented 6 years ago

No, that's for cmake. :-)

sw2wolf commented 6 years ago

@Dushistov ... [ 87%] Building CXX object CMakeFiles/sdcv.dir/src/distance.cpp.o /usr/bin/c++ -DHAVE_CONFIG_H -DVERSION=\"0.5.2\" -I/usr/pkg/include/glib/glib-2.0 -I/usr/pkg/lib/glib-2.0/include -I/usr/pkg/include -I/home/eagl eZZZ/sdcv-0.5.2/src/lib -I/home/eagleZZZ/sdcv-0.5.2/obj -std=c++11 -Wall -o CMakeFiles/sdcv.dir/src/distance.cpp.o -c /home/eagleZZZ/sdcv-0.5.2/sr c/distance.cpp [100%] Linking CXX executable sdcv /usr/pkg/bin/cmake -E cmake_link_script CMakeFiles/sdcv.dir/link.txt --verbose=1 /usr/bin/c++ -std=c++11 -Wall CMakeFiles/sdcv.dir/src/sdcv.cpp.o CMakeFiles/sdcv.dir/src/readline.cpp.o CMakeFiles/sdcv.dir/src/libwrapper.cpp .o CMakeFiles/sdcv.dir/src/utils.cpp.o CMakeFiles/sdcv.dir/src/stardict_lib.cpp.o CMakeFiles/sdcv.dir/src/dictziplib.cpp.o CMakeFiles/sdcv.dir/src /distance.cpp.o -o sdcv -Wl,-rpath,/usr/pkg/lib: -lglib-2.0 -lintl /usr/lib/libz.so /usr/pkg/lib/libreadline.so ld: cannot find -lglib-2.0 *** Error code 1 @Frenzie $ cmake -DGLIB2_LIBRARIES=/usr/pkg/lib/libglib-2.0.so .. works but `$ sdcv

Shared object "libglib-2.0.so.0" not found So iln -s` libglib-2.0.so.0 and libreadline.so.7 in /usr/pkg/lib to /usr/lib to fix those "not found" problem manually. And it works on netbsd-7.1 now. However, on openbsd-6.2 there is the following issue:

CMakeFiles/sdcv.dir/src/readline.cpp.o:(.data.rel.ro.local+0x30): undefined reference to `_ZL22__gthrw_pthread_cancelP7pthread'

` $ find /usr/lib -name "libpthread*"
/usr/lib/libpthread.so.24.0 /usr/lib/libpthread.a /usr/lib/libpthread_p.a

$nm -g /usr/lib/libpthread.a | grep -i pthread_cancel
00000a60 T pthread_cancel `

Regards!