Open MasterVitronic opened 3 years ago
Thank you :)
Can you can try the ˋ-DCFLTK_BUILD_SHARED` flag when configuring cmake.
Any other recommendations you would like to give me, I have the following problem
cd /tmp/cfltk
root[/tmp/cfltk/bin]# cmake -B bin -S . \
-DCMAKE_BUILD_TYPE=Release \
-DOPTION_USE_SYSTEM_LIBPNG=OFF \
-DOPTION_USE_SYSTEM_LIBJPEG=OFF \
-DOPTION_USE_SYSTEM_ZLIB=OFF \
-DOPTION_USE_GL=OFF \
-DFLTK_BUILD_EXAMPLES=OFF \
-DFLTK_BUILD_TEST=OFF \
-DOPTION_USE_THREADS=ON \
-DOPTION_LARGE_FILE=ON \
-DOPTION_BUILD_HTML_DOCUMENTATION=OFF \
-DOPTION_BUILD_PDF_DOCUMENTATION=OFF \
-DCFLTK_BUILD_SHARED=ON \
-DOPTION_BUILD_SHARED_LIBS=ON
[ 49%] Building CXX object CMakeFiles/cfltk.dir/src/cfl_table.cpp.o
[ 49%] Building CXX object CMakeFiles/cfltk.dir/src/cfl_tree.cpp.o
[ 49%] Building CXX object CMakeFiles/cfltk.dir/src/cfl_surface.cpp.o
[ 49%] Building CXX object CMakeFiles/cfltk.dir/src/cfl_printer.cpp.o
[ 49%] Linking CXX shared library libcfltk.so
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: fltk/lib/libfltk.a(Fl.cxx.o): relocation R_X86_64_PC32 against symbol `_ZN2Fl6focus_E' can not be used when making a shared object; recompile with -fPIC
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: final link failed: bad value
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/cfltk.dir/build.make:402: libcfltk.so.0.16.0] Error 1
make[2]: Leaving directory '/tmp/cfltk/bin'
make[1]: *** [CMakeFiles/Makefile2:219: CMakeFiles/cfltk.dir/all] Error 2
make[1]: Leaving directory '/tmp/cfltk/bin'
make: *** [Makefile:130: all] Error 2
I have updated the CMakeLists.txt to add
set_target_properties(cfltk PROPERTIES POSITION_INDEPENDENT_CODE ON)
when building a shared library.
Can you try again after pulling the last changes?
similar result with the last commit , could you replicate this and see if I am doing something wrong?
cmake -B bin -S . \
-DCMAKE_BUILD_TYPE=Release \
-DOPTION_USE_SYSTEM_LIBPNG=ON \
-DOPTION_USE_SYSTEM_LIBJPEG=ON \
-DOPTION_USE_SYSTEM_ZLIB=ON \
-DOPTION_USE_GL=OFF \
-DFLTK_BUILD_EXAMPLES=OFF \
-DFLTK_BUILD_TEST=OFF \
-DOPTION_USE_THREADS=ON \
-DOPTION_LARGE_FILE=ON \
-DOPTION_BUILD_HTML_DOCUMENTATION=OFF \
-DOPTION_BUILD_PDF_DOCUMENTATION=OFF \
-DCFLTK_BUILD_SHARED=ON \
-DOPTION_BUILD_SHARED_LIBS=ON
make[2]: Leaving directory '/tmp/cfltk/bin'
[ 97%] Built target fluid
[ 97%] Building CXX object CMakeFiles/cfltk.dir/src/cfl_menu.cpp.o
[ 97%] Building CXX object CMakeFiles/cfltk.dir/src/cfl_dialog.cpp.o
[ 97%] Building CXX object CMakeFiles/cfltk.dir/src/cfl_valuator.cpp.o
[ 98%] Building CXX object CMakeFiles/cfltk.dir/src/cfl_browser.cpp.o
[ 98%] Building CXX object CMakeFiles/cfltk.dir/src/cfl_misc.cpp.o
[ 98%] Building CXX object CMakeFiles/cfltk.dir/src/cfl_image.cpp.o
[ 98%] Building CXX object CMakeFiles/cfltk.dir/src/cfl_draw.cpp.o
[ 99%] Building CXX object CMakeFiles/cfltk.dir/src/cfl_table.cpp.o
[ 99%] Building CXX object CMakeFiles/cfltk.dir/src/cfl_tree.cpp.o
[ 99%] Building CXX object CMakeFiles/cfltk.dir/src/cfl_surface.cpp.o
[ 99%] Building CXX object CMakeFiles/cfltk.dir/src/cfl_printer.cpp.o
[100%] Linking CXX shared library libcfltk.so
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lfltk_z
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lfltk_jpeg
/usr/lib/gcc/x86_64-alpine-linux-musl/9.2.0/../../../../x86_64-alpine-linux-musl/bin/ld: cannot find -lfltk_png
collect2: error: ld returned 1 exit status
make[2]: *** [CMakeFiles/cfltk.dir/build.make:403: libcfltk.so.0.16.0] Error 1
make[2]: Leaving directory '/tmp/cfltk/bin'
make[1]: *** [CMakeFiles/Makefile2:147: CMakeFiles/cfltk.dir/all] Error 2
make[1]: Leaving directory '/tmp/cfltk/bin'
make: *** [Makefile:130: all] Error 2
root[/tmp/cfltk/bin]#
Sure will do. But it’ll be when I get back to my dev machine after the weekend.
I tried it on a VM, can you try the following invocation:
cmake -B bin -S . -DCMAKE_BUILD_TYPE=Release \
-DOPTION_USE_SYSTEM_LIBPNG=ON \
-DOPTION_USE_SYSTEM_LIBJPEG=ON \
-DOPTION_USE_SYSTEM_ZLIB=ON \
-DOPTION_USE_GL=OFF \
-DFLTK_BUILD_EXAMPLES=OFF \
-DFLTK_BUILD_TEST=OFF \
-DOPTION_USE_THREADS=ON \
-DOPTION_LARGE_FILE=ON \
-DOPTION_BUILD_HTML_DOCUMENTATION=OFF \
-DOPTION_BUILD_PDF_DOCUMENTATION=OFF \
-DCFLTK_BUILD_SHARED=ON \
-DCFLTK_LINK_IMAGES=OFF \
-DCMAKE_POSITION_INDEPENDENT_CODE=ON
Notice the last 3 cmake flags, also the removal of -DOPTION_BUILD_SHARED_LIBS=ON
This builds libfltk as static but libcfltk as dynamic with all the symbols of libfltk, so libfltk is no longer needed.
I compile without problem, but I don't link correctly, I haven't tested it yet, but this is what ldd shows me
vitronic [/tmp/CFLTK/bin]$ ls *.so*
libcfltk.so libcfltk.so.0.16.0
vitronic [/tmp/CFLTK/bin]$ ldd libcfltk.so.0.16.0
/lib/ld-musl-x86_64.so.1 (0x7febe8489000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x7febe80ec000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x7febe80d9000)
libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x7febe80d4000)
libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x7febe80cc000)
libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0x7febe80c0000)
libXrender.so.1 => /usr/lib/libXrender.so.1 (0x7febe80b4000)
libXft.so.2 => /usr/lib/libXft.so.2 (0x7febe809f000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x7febe8062000)
libc.musl-x86_64.so.1 => /lib/ld-musl-x86_64.so.1 (0x7febe8489000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x7febe803b000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x7febe7f89000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0x7febe7f66000)
libuuid.so.1 => /lib/libuuid.so.1 (0x7febe7f5d000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x7febe7f58000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x7febe7f50000)
libbz2.so.1 => /usr/lib/libbz2.so.1 (0x7febe7f41000)
libpng16.so.16 => /usr/lib/libpng16.so.16 (0x7febe7f11000)
libz.so.1 => /lib/libz.so.1 (0x7febe7ef7000)
libbsd.so.0 => /usr/lib/libbsd.so.0 (0x7febe7ee1000)
Error relocating libcfltk.so.0.16.0: _ZN12Fl_BMP_ImageC1EPKc: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN14Fl_Help_Dialog8textsizeEi: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN14Fl_Help_Dialog4showEv: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN14Fl_Help_Dialog4loadEPKc: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN14Fl_Help_Dialog8textsizeEv: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN12Fl_PNG_ImageC1EPKc: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN14Fl_Help_DialogD1Ev: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN12Fl_PNG_ImageC1EPKcPKhi: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN19Fl_SVG_File_Surface4fileEv: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN14Fl_Help_Dialog7visibleEv: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN13Fl_JPEG_ImageC1EPKcPKh: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN12Fl_SVG_ImageC1EPKcS1_: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN14Fl_Help_Dialog6resizeEiiii: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN14Fl_Help_Dialog4hideEv: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN12Fl_GIF_ImageC1EPKc: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN14Fl_Help_Dialog1xEv: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN19Fl_SVG_File_SurfaceC1EiiP8_IO_FILEPFiS1_E: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN14Fl_Help_Dialog8positionEii: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN12Fl_BMP_ImageC1EPKcPKh: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN12Fl_PNM_ImageC1EPKc: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN13Fl_JPEG_ImageC1EPKc: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN12Fl_GIF_ImageC1EPKcPKh: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN14Fl_Help_Dialog5valueEPKc: symbol not found
Error relocating libcfltk.so.0.16.0: _Z18fl_register_imagesv: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN14Fl_Help_Dialog1hEv: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN14Fl_Help_Dialog1wEv: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN14Fl_Help_DialogC1Ev: symbol not found
Error relocating libcfltk.so.0.16.0: _ZNK14Fl_Help_Dialog5valueEv: symbol not found
Error relocating libcfltk.so.0.16.0: _ZN14Fl_Help_Dialog1yEv: symbol not found
Needless to say I am very grateful for your attention, I will keep trying and I will keep you informed.
Hmm It seems shared libcfltk won't work with system image libs. I'll need to investigate further.
cmake -B bin -S . -DCMAKE_BUILD_TYPE=Release -DOPTION_USE_SYSTEM_LIBPNG=OFF -DOPTION_USE_SYSTEM_LIBJPEG=OFF -DOPTION_USE_SYSTEM_ZLIB=OFF -DOPTION_USE_GL=OFF -DFLTK_BUILD_EXAMPLES=OFF -DFLTK_BUILD_TEST=OFF -DOPTION_USE_THREADS=ON -DOPTION_LARGE_FILE=ON -DOPTION_BUILD_HTML_DOCUMENTATION=OFF -DOPTION_BUILD_PDF_DOCUMENTATION=OFF -DCFLTK_BUILD_SHARED=ON -DCFLTK_LINK_IMAGES=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON
When building a dynamic library, I get the error of not having a PNG library:
When building a dynamic library, I get the error of not having a PNG library:
I'm sorry, my inattention:
-- Shared libraries will not be built (set OPTION_BUILD_SHARED_LIBS=ON to build)
If you don't need fltk image support, make sure you have libpng-dev is installed. Make sure you also use a recent version of cfltk and fltk, since there was an issue reported in FLTK regarding png linking. Also try with this:
cmake -B bin -S . -DCMAKE_BUILD_TYPE=Release -DOPTION_USE_SYSTEM_LIBPNG=ON -DOPTION_USE_SYSTEM_LIBJPEG=ON -DOPTION_USE_SYSTEM_ZLIB=ON -DOPTION_USE_GL=OFF -DFLTK_BUILD_EXAMPLES=OFF -DFLTK_BUILD_TEST=OFF -DOPTION_USE_THREADS=ON -DOPTION_LARGE_FILE=ON -DOPTION_BUILD_HTML_DOCUMENTATION=OFF -DOPTION_BUILD_PDF_DOCUMENTATION=OFF -DCFLTK_BUILD_SHARED=ON -DCFLTK_LINK_IMAGES=OFF -DCMAKE_POSITION_INDEPENDENT_CODE=ON
To get built-in image support:
cmake -B bin -S . -DCMAKE_BUILD_TYPE=Release -DOPTION_USE_SYSTEM_LIBPNG=OFF -DOPTION_USE_SYSTEM_LIBJPEG=OFF -DOPTION_USE_SYSTEM_ZLIB=OFF -DOPTION_USE_GL=OFF -DFLTK_BUILD_EXAMPLES=OFF -DFLTK_BUILD_TEST=OFF -DOPTION_USE_THREADS=ON -DOPTION_LARGE_FILE=ON -DOPTION_BUILD_HTML_DOCUMENTATION=OFF -DOPTION_BUILD_PDF_DOCUMENTATION=OFF -DCFLTK_BUILD_SHARED=ON -DCMAKE_POSITION_INDEPENDENT_CODE=ON
Greetings, great job. Any recommendations for building cfltk dynamically, currently build
libcfltk.a
, but would like alibcfltk.so
instead I tried with -DOPTION_BUILD_SHARED_LIBS=ON but it only works for fltk, cfltk stays the same.