static link to ldd output libraries - gcc

Static link to ldd output dynamic libraries except for glibc.
I've been using ffmpeg to extract rtsp key frames and I want to make the c program work on xilinx zyqn board after static compiling. But after trying several times, I still could not make it work.
Here is the output of ldd:
linux-vdso.so.1 => (0x00007fff8b1cf000)
libavutil-ffmpeg.so.54 => /usr/lib/x86_64-linux-gnu/libavutil-ffmpeg.so.54 (0x00007f12f1da9000)
libavformat-ffmpeg.so.56 => /usr/lib/x86_64-linux-gnu/libavformat-ffmpeg.so.56 (0x00007f12f19aa000)
libavcodec-ffmpeg.so.56 => /usr/lib/x86_64-linux-gnu/libavcodec-ffmpeg.so.56 (0x00007f12f0579000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f12f01af000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f12efea6000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f12efc89000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f12efa85000)
libssh-gcrypt.so.4 => /usr/lib/x86_64-linux-gnu/libssh-gcrypt.so.4 (0x00007f12ef83c000)
librtmp.so.1 => /usr/lib/x86_64-linux-gnu/librtmp.so.1 (0x00007f12ef620000)
libz.so.1 => /home/wyh/miniconda2/lib/libz.so.1 (0x00007f12ef409000)
libmodplug.so.1 => /usr/lib/x86_64-linux-gnu/libmodplug.so.1 (0x00007f12ef07e000)
libgme.so.0 => /usr/lib/x86_64-linux-gnu/libgme.so.0 (0x00007f12eee30000)
libbluray.so.1 => /usr/lib/x86_64-linux-gnu/libbluray.so.1 (0x00007f12eebe7000)
libgnutls.so.30 => /usr/lib/x86_64-linux-gnu/libgnutls.so.30 (0x00007f12ee8b7000)
libbz2.so.1.0 => /lib/x86_64-linux-gnu/libbz2.so.1.0 (0x00007f12ee6a7000)
libswresample-ffmpeg.so.1 => /usr/lib/x86_64-linux-gnu/libswresample-ffmpeg.so.1 (0x00007f12ee48a000)
libva.so.1 => /usr/lib/x86_64-linux-gnu/libva.so.1 (0x00007f12ee26e000)
libzvbi.so.0 => /usr/lib/x86_64-linux-gnu/libzvbi.so.0 (0x00007f12edfe3000)
libxvidcore.so.4 => /usr/lib/x86_64-linux-gnu/libxvidcore.so.4 (0x00007f12edccf000)
libx265.so.79 => /usr/lib/x86_64-linux-gnu/libx265.so.79 (0x00007f12ed0b0000)
libx264.so.148 => /usr/lib/x86_64-linux-gnu/libx264.so.148 (0x00007f12ecd0c000)
libwebp.so.5 => /usr/lib/x86_64-linux-gnu/libwebp.so.5 (0x00007f12ecab0000)
libwavpack.so.1 => /usr/lib/x86_64-linux-gnu/libwavpack.so.1 (0x00007f12ec887000)
libvpx.so.3 => /usr/lib/x86_64-linux-gnu/libvpx.so.3 (0x00007f12ec463000)
libvorbisenc.so.2 => /usr/lib/x86_64-linux-gnu/libvorbisenc.so.2 (0x00007f12ec1ba000)
libvorbis.so.0 => /usr/lib/x86_64-linux-gnu/libvorbis.so.0 (0x00007f12ebf8f000)
libtwolame.so.0 => /usr/lib/x86_64-linux-gnu/libtwolame.so.0 (0x00007f12ebd6c000)
libtheoraenc.so.1 => /usr/lib/x86_64-linux-gnu/libtheoraenc.so.1 (0x00007f12ebb2d000)
libtheoradec.so.1 => /usr/lib/x86_64-linux-gnu/libtheoradec.so.1 (0x00007f12eb913000)
libspeex.so.1 => /usr/lib/x86_64-linux-gnu/libspeex.so.1 (0x00007f12eb6fa000)
libsnappy.so.1 => /usr/lib/x86_64-linux-gnu/libsnappy.so.1 (0x00007f12eb4f2000)
libshine.so.3 => /usr/lib/x86_64-linux-gnu/libshine.so.3 (0x00007f12eb2e5000)
libschroedinger-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libschroedinger-1.0.so.0 (0x00007f12eb010000)
libopus.so.0 => /usr/lib/x86_64-linux-gnu/libopus.so.0 (0x00007f12eadc6000)
libopenjpeg.so.5 => /usr/lib/x86_64-linux-gnu/libopenjpeg.so.5 (0x00007f12eaba3000)
libmp3lame.so.0 => /usr/lib/x86_64-linux-gnu/libmp3lame.so.0 (0x00007f12ea92e000)
libgsm.so.1 => /usr/lib/x86_64-linux-gnu/libgsm.so.1 (0x00007f12ea720000)
libcrystalhd.so.3 => /usr/lib/x86_64-linux-gnu/libcrystalhd.so.3 (0x00007f12ea505000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f12ea2e3000)
/lib64/ld-linux-x86-64.so.2 (0x00007f12f2018000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f12ea0db000)
libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f12e9dfa000)
libgssapi_krb5.so.2 => /usr/lib/x86_64-linux-gnu/libgssapi_krb5.so.2 (0x00007f12e9bb0000)
libhogweed.so.4 => /usr/lib/x86_64-linux-gnu/libhogweed.so.4 (0x00007f12e997d000)
libnettle.so.6 => /usr/lib/x86_64-linux-gnu/libnettle.so.6 (0x00007f12e9747000)
libgmp.so.10 => /usr/lib/x86_64-linux-gnu/libgmp.so.10 (0x00007f12e94c7000)
libstdc++.so.6 => /home/wyh/miniconda2/lib/libstdc++.so.6 (0x00007f12e918d000)
libgcc_s.so.1 => /home/wyh/miniconda2/lib/libgcc_s.so.1 (0x00007f12e8f7b000)
libxml2.so.2 => /usr/lib/x86_64-linux-gnu/libxml2.so.2 (0x00007f12e8bc0000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f12e897d000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f12e86d3000)
libp11-kit.so.0 => /usr/lib/x86_64-linux-gnu/libp11-kit.so.0 (0x00007f12e846f000)
libidn.so.11 => /usr/lib/x86_64-linux-gnu/libidn.so.11 (0x00007f12e823c000)
libtasn1.so.6 => /usr/lib/x86_64-linux-gnu/libtasn1.so.6 (0x00007f12e8029000)
libsoxr.so.0 => /usr/lib/x86_64-linux-gnu/libsoxr.so.0 (0x00007f12e7dc4000)
libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007f12e7b9f000)
libnuma.so.1 => /usr/lib/x86_64-linux-gnu/libnuma.so.1 (0x00007f12e7994000)
libogg.so.0 => /usr/lib/x86_64-linux-gnu/libogg.so.0 (0x00007f12e778b000)
liborc-0.4.so.0 => /usr/lib/x86_64-linux-gnu/liborc-0.4.so.0 (0x00007f12e750b000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f12e72f7000)
libkrb5.so.3 => /usr/lib/x86_64-linux-gnu/libkrb5.so.3 (0x00007f12e7025000)
libk5crypto.so.3 => /usr/lib/x86_64-linux-gnu/libk5crypto.so.3 (0x00007f12e6df6000)
libcom_err.so.2 => /lib/x86_64-linux-gnu/libcom_err.so.2 (0x00007f12e6bf2000)
libkrb5support.so.0 => /usr/lib/x86_64-linux-gnu/libkrb5support.so.0 (0x00007f12e69e7000)
libicuuc.so.55 => /usr/lib/x86_64-linux-gnu/libicuuc.so.55 (0x00007f12e6653000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f12e642a000)
libffi.so.6 => /home/wyh/miniconda2/lib/libffi.so.6 (0x00007f12e6221000)
libgomp.so.1 => /home/wyh/miniconda2/lib/libgomp.so.1 (0x00007f12e5ffe000)
libkeyutils.so.1 => /lib/x86_64-linux-gnu/libkeyutils.so.1 (0x00007f12e5dfa000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f12e5bdf000)
libicudata.so.55 => /usr/lib/x86_64-linux-gnu/libicudata.so.55 (0x00007f12e4128000)
How can I correctly link to the all the static libs above? Thanks a lot!

This is going to be a nightmare. You need static versions of all these libraries (*.a files instead of *.so files). Also, when the *.so files are present, the *.a files will be ignored by the linker.
You are better off just using shared linking and bundling the *.so files you need together with your application. Add an rpath to your build flags to make the executable load the bundled libraries. If you ship them in a lib directory alongside the application executable, you would need to add -Wl,-rpath -Wl,$ORIGIN/lib to your GCC flags.
Another possible solution is creating an AppImage:
https://appimage.org
This works extremely well for Intel-based Linux. I don't know how well it works for ARM.

Related

Rstudio cannot launch properly with conda environment in Linux cluster

I am trying to launch a Rstudio session with a conda environment activated in a remote linux cluster. The commands are
$conda activate sc-tutorial
$rstudio
I get the following errors:
"TypeError: undefined is not an object (evaluating 'window.desktopHooks.notifyRCrashed')"
QApplication::qAppName: Please instantiate the QApplication object first
setNativeLocks failed: Resource temporarily unavailable
and a blank R screen like the following:
Without the conda environment activated, Rstudio can be properly launched.
The OS is CentOS 7 and The rstudio version is 1.1.423. Without the conda environment activated,
ldd /usr/bin/rstudio
gives:
linux-vdso.so.1 => (0x00007ffd18b0a000)
libQt5Core.so.5 => not found
libQt5Widgets.so.5 => not found
libQt5Gui.so.5 => not found
libQt5Network.so.5 => not found
libQt5WebChannel.so.5 => not found
libQt5WebKit.so.5 => not found
libQt5WebKitWidgets.so.5 => not found
libQt5PrintSupport.so.5 => not found
libQt5Quick.so.5 => not found
libQt5Positioning.so.5 => not found
libQt5Sensors.so.5 => not found
libQt5Svg.so.5 => not found
libQt5Xml.so.5 => not found
libQt5XmlPatterns.so.5 => not found
libQt5Qml.so.5 => not found
libQt5Sql.so.5 => not found
libQt5OpenGL.so.5 => not found
libQt5DBus.so.5 => not found
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fdbf6482000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007fdbf627f000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007fdbf607a000)
librt.so.1 => /lib64/librt.so.1 (0x00007fdbf5e72000)
libz.so.1 => /lib64/libz.so.1 (0x00007fdbf5c5c000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007fdbf5954000)
libm.so.6 => /lib64/libm.so.6 (0x00007fdbf5652000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007fdbf543c000)
libc.so.6 => /lib64/libc.so.6 (0x00007fdbf506e000)
/lib64/ld-linux-x86-64.so.2 (0x00007fdbf669e000)
And with the conda environment activated, the ldd command gives:
linux-vdso.so.1 => (0x00007fff723f5000)
libQt5Core.so.5 => not found
libQt5Widgets.so.5 => not found
libQt5Gui.so.5 => not found
libQt5Network.so.5 => not found
libQt5WebChannel.so.5 => not found
libQt5WebKit.so.5 => not found
libQt5WebKitWidgets.so.5 => not found
libQt5PrintSupport.so.5 => not found
libQt5Quick.so.5 => not found
libQt5Positioning.so.5 => not found
libQt5Sensors.so.5 => not found
libQt5Svg.so.5 => not found
libQt5Xml.so.5 => not found
libQt5XmlPatterns.so.5 => not found
libQt5Qml.so.5 => not found
libQt5Sql.so.5 => not found
libQt5OpenGL.so.5 => not found
libQt5DBus.so.5 => not found
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f15b1440000)
libutil.so.1 => /lib64/libutil.so.1 (0x00007f15b123d000)
libuuid.so.1 => /lib64/libuuid.so.1 (0x00007f15b1038000)
librt.so.1 => /lib64/librt.so.1 (0x00007f15b0e30000)
libz.so.1 => /lib64/libz.so.1 (0x00007f15b0c1a000)
libstdc++.so.6 => /lib64/libstdc++.so.6 (0x00007f15b0912000)
libm.so.6 => /lib64/libm.so.6 (0x00007f15b0610000)
libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f15b03fa000)
libc.so.6 => /lib64/libc.so.6 (0x00007f15b002c000)
/lib64/ld-linux-x86-64.so.2 (0x00007f15b165c000)
Do you have an idea how to solve this problem?
Thank you very much!

How to compile GTK+ base application with musl-gcc?

I compiled this GTK+ Example App with both gcc & musl-gcc. Both of those produced a binary file, but musl-gcc produced binary does not execute correctly & shows bunch of errors.
Note: I installed both musl-libc and libgtk3 dev version.
Note: ldd command logs are allmost same for both gcc & musl-gcc produced binary files.
GTK+ Example App:
#include <gtk/gtk.h>
static void activate (GtkApplication* app, gpointer user_data) {
GtkWidget *window;
window = gtk_application_window_new (app);
gtk_window_set_title (GTK_WINDOW (window), "Window");
gtk_window_set_default_size (GTK_WINDOW (window), 600, 600);
gtk_widget_show_all (window);
}
int main (int argc, char **argv) {
GtkApplication *app;
int status;
app = gtk_application_new ("org.gtk.example", G_APPLICATION_FLAGS_NONE);
g_signal_connect (app, "activate", G_CALLBACK (activate), NULL);
status = g_application_run (G_APPLICATION (app), argc, argv);
g_object_unref (app);
return status;
}
Comilation Command:
musl-gcc -Wall -g -o main main.c -I/usr/include/gtk-3.0 -I/usr/include/at-spi2-atk/2.0 -I/usr/include/at-spi-2.0 -I/usr/include/dbus-1.0 -I/usr/lib/x86_64-linux-gnu/dbus-1.0/include -I/usr/include/gtk-3.0 -I/usr/include/gio-unix-2.0/ -I/usr/include/cairo -I/usr/include/pango-1.0 -I/usr/include/harfbuzz -I/usr/include/pango-1.0 -I/usr/include/atk-1.0 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/gdk-pixbuf-2.0 -I/usr/include/libpng16 -I/usr/include/glib-2.0 -I/usr/lib/x86_64-linux-gnu/glib-2.0/include -L/usr/lib/x86_64-linux-gnu -lgtk-3 -lgdk-3 -lpangocairo-1.0 -lpango-1.0 -latk-1.0 -lcairo-gobject -lcairo -lgdk_pixbuf-2.0 -lgio-2.0 -lgobject-2.0 -lglib-2.0
musl-gcc produced binary log:
Error loading shared library libgtk-3.so.0: No such file or directory (needed by ./main)
Error loading shared library libgdk-3.so.0: No such file or directory (needed by ./main)
Error loading shared library libpangocairo-1.0.so.0: No such file or directory (needed by ./main)
Error loading shared library libpango-1.0.so.0: No such file or directory (needed by ./main)
Error loading shared library libatk-1.0.so.0: No such file or directory (needed by ./main)
Error loading shared library libcairo-gobject.so.2: No such file or directory (needed by ./main)
Error loading shared library libcairo.so.2: No such file or directory (needed by ./main)
Error loading shared library libgdk_pixbuf-2.0.so.0: No such file or directory (needed by ./main)
Error loading shared library libgio-2.0.so.0: No such file or directory (needed by ./main)
Error loading shared library libgobject-2.0.so.0: No such file or directory (needed by ./main)
Error loading shared library libglib-2.0.so.0: No such file or directory (needed by ./main)
Error relocating ./main: gtk_application_new: symbol not found
Error relocating ./main: gtk_application_window_new: symbol not found
Error relocating ./main: g_application_get_type: symbol not found
Error relocating ./main: g_type_check_instance_cast: symbol not found
Error relocating ./main: g_application_run: symbol not found
Error relocating ./main: gtk_window_set_title: symbol not found
Error relocating ./main: gtk_window_set_default_size: symbol not found
Error relocating ./main: g_signal_connect_data: symbol not found
Error relocating ./main: gtk_widget_show_all: symbol not found
Error relocating ./main: g_object_unref: symbol not found
Error relocating ./main: gtk_window_get_type: symbol not found
ldd command log for gcc produced binary:
linux-vdso.so.1 (0x00007ffe90ff4000)
libgtk-3.so.0 => /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 (0x00007f9f93fec000)
libgio-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007f9f93c4d000)
libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f9f939f9000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f9f93608000)
libgdk-3.so.0 => /usr/lib/x86_64-linux-gnu/libgdk-3.so.0 (0x00007f9f93312000)
libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f9f9310e000)
libpangocairo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007f9f92f01000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f9f92bc9000)
libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007f9f929b9000)
libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f9f927b3000)
libcairo-gobject.so.2 => /usr/lib/x86_64-linux-gnu/libcairo-gobject.so.2 (0x00007f9f925aa000)
libcairo.so.2 => /usr/lib/x86_64-linux-gnu/libcairo.so.2 (0x00007f9f9228d000)
libgdk_pixbuf-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007f9f92069000)
libatk-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0 (0x00007f9f91e43000)
libatk-bridge-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0 (0x00007f9f91c12000)
libepoxy.so.0 => /usr/lib/x86_64-linux-gnu/libepoxy.so.0 (0x00007f9f91911000)
libpangoft2-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007f9f916fb000)
libpango-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007f9f914ae000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f9f91269000)
libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f9f90f53000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f9f90bb5000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f9f90996000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f9f90779000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f9f90551000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f9f90336000)
libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007f9f900e2000)
libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f9f8feda000)
/lib64/ld-linux-x86-64.so.2 (0x00007f9f94af6000)
libXinerama.so.1 => /usr/lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007f9f8fcd7000)
libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007f9f8facc000)
libXcursor.so.1 => /usr/lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007f9f8f8c2000)
libXcomposite.so.1 => /usr/lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007f9f8f6bf000)
libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f9f8f4bc000)
libxkbcommon.so.0 => /usr/lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007f9f8f27d000)
libwayland-cursor.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-cursor.so.0 (0x00007f9f8f075000)
libwayland-egl.so.1 => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007f9f8ee73000)
libwayland-client.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007f9f8ec64000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f9f8ea52000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f9f8e84a000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f9f8e646000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f9f8e392000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f9f8e16a000)
libpixman-1.so.0 => /usr/lib/x86_64-linux-gnu/libpixman-1.so.0 (0x00007f9f8dec5000)
libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f9f8dc93000)
libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007f9f8da90000)
libxcb-render.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007f9f8d883000)
libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f9f8d679000)
libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f9f8d42c000)
libatspi.so.0 => /usr/lib/x86_64-linux-gnu/libatspi.so.0 (0x00007f9f8d1fc000)
libharfbuzz.so.0 => /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f9f8cf5e000)
libthai.so.0 => /usr/lib/x86_64-linux-gnu/libthai.so.0 (0x00007f9f8cd55000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f9f8cb23000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f9f8c8b1000)
libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007f9f8c664000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f9f8c460000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f9f8c25a000)
libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007f9f8bfd6000)
libgraphite2.so.3 => /usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f9f8bda9000)
libdatrie.so.1 => /usr/lib/x86_64-linux-gnu/libdatrie.so.1 (0x00007f9f8bba2000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f9f8b99b000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f9f8b786000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f9f8b560000)
liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007f9f8b344000)
libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f9f8b029000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f9f8ae14000)
ldd command log for musl-gcc produced binary:
linux-vdso.so.1 (0x00007ffeaf2ca000)
libgtk-3.so.0 => /usr/lib/x86_64-linux-gnu/libgtk-3.so.0 (0x00007f03c1a9f000)
libgdk-3.so.0 => /usr/lib/x86_64-linux-gnu/libgdk-3.so.0 (0x00007f03c17a9000)
libpangocairo-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007f03c159c000)
libpango-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007f03c134f000)
libatk-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-1.0.so.0 (0x00007f03c1129000)
libcairo-gobject.so.2 => /usr/lib/x86_64-linux-gnu/libcairo-gobject.so.2 (0x00007f03c0f20000)
libcairo.so.2 => /usr/lib/x86_64-linux-gnu/libcairo.so.2 (0x00007f03c0c03000)
libgdk_pixbuf-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007f03c09df000)
libgio-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007f03c0640000)
libgobject-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007f03c03ec000)
libglib-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007f03c00d6000)
libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f03bfce5000)
libgmodule-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007f03bfae1000)
libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007f03bf7a9000)
libXi.so.6 => /usr/lib/x86_64-linux-gnu/libXi.so.6 (0x00007f03bf599000)
libXfixes.so.3 => /usr/lib/x86_64-linux-gnu/libXfixes.so.3 (0x00007f03bf393000)
libatk-bridge-2.0.so.0 => /usr/lib/x86_64-linux-gnu/libatk-bridge-2.0.so.0 (0x00007f03bf162000)
libepoxy.so.0 => /usr/lib/x86_64-linux-gnu/libepoxy.so.0 (0x00007f03bee61000)
libpangoft2-1.0.so.0 => /usr/lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007f03bec4b000)
libfontconfig.so.1 => /usr/lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007f03bea06000)
libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f03be668000)
libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007f03be449000)
libXinerama.so.1 => /usr/lib/x86_64-linux-gnu/libXinerama.so.1 (0x00007f03be246000)
libXrandr.so.2 => /usr/lib/x86_64-linux-gnu/libXrandr.so.2 (0x00007f03be03b000)
libXcursor.so.1 => /usr/lib/x86_64-linux-gnu/libXcursor.so.1 (0x00007f03bde31000)
libXcomposite.so.1 => /usr/lib/x86_64-linux-gnu/libXcomposite.so.1 (0x00007f03bdc2e000)
libXdamage.so.1 => /usr/lib/x86_64-linux-gnu/libXdamage.so.1 (0x00007f03bda2b000)
libxkbcommon.so.0 => /usr/lib/x86_64-linux-gnu/libxkbcommon.so.0 (0x00007f03bd7ec000)
libwayland-cursor.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-cursor.so.0 (0x00007f03bd5e4000)
libwayland-egl.so.1 => /usr/lib/x86_64-linux-gnu/libwayland-egl.so.1 (0x00007f03bd3e2000)
libwayland-client.so.0 => /usr/lib/x86_64-linux-gnu/libwayland-client.so.0 (0x00007f03bd1d3000)
libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007f03bcfc1000)
librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f03bcdb9000)
libfreetype.so.6 => /usr/lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007f03bcb05000)
libthai.so.0 => /usr/lib/x86_64-linux-gnu/libthai.so.0 (0x00007f03bc8fc000)
libpixman-1.so.0 => /usr/lib/x86_64-linux-gnu/libpixman-1.so.0 (0x00007f03bc657000)
libpng16.so.16 => /usr/lib/x86_64-linux-gnu/libpng16.so.16 (0x00007f03bc425000)
libxcb-shm.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007f03bc222000)
libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007f03bbffa000)
libxcb-render.so.0 => /usr/lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007f03bbded000)
libXrender.so.1 => /usr/lib/x86_64-linux-gnu/libXrender.so.1 (0x00007f03bbbe3000)
libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007f03bb9c6000)
libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007f03bb79e000)
libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007f03bb583000)
libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007f03bb32f000)
libffi.so.6 => /usr/lib/x86_64-linux-gnu/libffi.so.6 (0x00007f03bb127000)
libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007f03baeb5000)
/lib/ld-musl-x86_64.so.1 => /lib64/ld-linux-x86-64.so.2 (0x00007f03c25a9000)
libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f03bacb1000)
libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007f03baa64000)
libatspi.so.0 => /usr/lib/x86_64-linux-gnu/libatspi.so.0 (0x00007f03ba834000)
libharfbuzz.so.0 => /usr/lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007f03ba596000)
libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007f03ba364000)
libdatrie.so.1 => /usr/lib/x86_64-linux-gnu/libdatrie.so.1 (0x00007f03ba15d000)
libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007f03b9f59000)
libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007f03b9d53000)
libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007f03b9b06000)
libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007f03b9882000)
libgraphite2.so.3 => /usr/lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007f03b9655000)
libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007f03b9440000)
libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007f03b9239000)
liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007f03b9013000)
liblz4.so.1 => /usr/lib/x86_64-linux-gnu/liblz4.so.1 (0x00007f03b8df7000)
libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007f03b8adc000)
libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007f03b88c7000)
You should not pass the compilation arguments by hand. This is what pkg-config is made for, and what is advised in the Compiling GTK+ Applications section of the docs.
So you should do instead:
musl-gcc -g -Wall $(pkg-config --cflags gtk+-3.0) main.c -o main $(pkg-config --libs gtk+-3.0)
Search for ../etc/ld-musl-$(ARCH).path Musl manual.
Here's also an extract from the FAQ:
Where is ldd?
musl’s dynamic linker comes with ldd functionality built in. Just
create a symlink from ld-musl-$ARCH.so to /bin/ldd. If the dynamic
linker was started as “ldd”, it will detect that and print the
appropriate DSO information.
Now it seems musl has a different ldconfig that doesn't use your standard paths, which would explain your problem. You could use the -L option of gcc to workaround that and specify in which directories to search for libraries, but a better way would be to learn how the linker and musl work together, so that the compiler looks at the right places. ldd will be of no use, it's using the linker config for the libc, not for musl.

PHP file upload medical images

I want to upload medical images which is in extension (.nii & .mnc & . dcm)
I have tried adding the extension in application/config/mimes.php but not work, how can I upload medical images which have extension(.nii, .mnc, .dcm)?
return array(
'nii' => array('image/nii'),
'dcm' => array('image/dcm'),
'3g2' => 'video/3gpp2',
'3gp' => array('video/3gp', 'video/3gpp'),
'mp4' => 'video/mp4',
'm4a' => 'audio/x-m4a',
'f4v' => array('video/mp4', 'video/x-f4v'),
'flv' => 'video/x-flv',
'webm' => 'video/webm',
'aac' => 'audio/x-acc',
'm4u' => 'application/vnd.mpegurl',
'm3u' => 'text/plain',
'xspf' => 'application/xspf+xml',
'vlc' => 'application/videolan'
);

/couchbase_ext.so: undefined symbol: lcb_create_io_ops

I am trying to us couchbase ruby, but when I attempt connect I receive this error:
/couchbase_ext.so: undefined symbol: lcb_create_io_ops
I am using this code:
require 'rubygems'
require 'couchbase'
client = Couchbase.connect(:bucket => "domain",
:hostname => "localhost" )
client.get("dominio.test")
client.disconnect
I am using
amazon ec2 instance
ruby-1.9.3-p448 [ x86_64 ]
libcouchbase-devel-2.2.0-1.x86_64
and response for ldd $(gem which couchbase_ext.so) is
linux-vdso.so.1 => (0x00007fff541ff000)
libruby.so.2.0 => /home/yvillar/.rvm/rubies/ruby-2.0.0-p247/lib/libruby.so.2.0 (0x00007fedd2afd000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fedd28d7000)
librt.so.1 => /lib64/librt.so.1 (0x00007fedd26cf000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fedd24cb000)
libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007fedd2293000)
libm.so.6 => /lib64/libm.so.6 (0x00007fedd2010000)
libc.so.6 => /lib64/libc.so.6 (0x00007fedd1c84000)
/lib64/ld-linux-x86-64.so.2 (0x00007fedd319d000)
libfreebl3.so => /lib64/libfreebl3.so (0x00007fedd1a21000)

Need to build fully static linphone

I need to be able to copy a linphone 3.5.2 binary to other PCs without having to install it every time. I was trying to compile a portable linphone, however no configure args helped:
./configure --enable-static --disable-strict --disable-rpath --disable-shared \
--disable-x11 --enable-fast-install --enable-console_ui=yes --enable-gtk_ui=no \
--enable-relativeprefix --enable-ipv6 --enable-nonstandard-gsm --enable-rsvp \
--enable-ssl --enable-video --enable-alsa --enable-portaudio --with-gnu-ld
ldd console/linphonec
linux-vdso.so.1 (0x00007fffe7dff000)
libeXosip2.so.6 => /usr/lib64/libeXosip2.so.6 (0x00007fcf2a8b4000)
libresolv.so.2 => /lib64/libresolv.so.2 (0x00007fcf2a69d000)
libcrypto.so.1.0.0 => /usr/lib64/libcrypto.so.1.0.0 (0x00007fcf2a2c7000)
libssl.so.1.0.0 => /usr/lib64/libssl.so.1.0.0 (0x00007fcf2a05d000)
libsoup-2.4.so.1 => /usr/lib64/libsoup-2.4.so.1 (0x00007fcf29df1000)
libgio-2.0.so.0 => /usr/lib64/libgio-2.0.so.0 (0x00007fcf29aa1000)
libgobject-2.0.so.0 => /usr/lib64/libgobject-2.0.so.0 (0x00007fcf29851000)
libglib-2.0.so.0 => /usr/lib64/libglib-2.0.so.0 (0x00007fcf2952d000)
libreadline.so.6 => /lib64/libreadline.so.6 (0x00007fcf292e5000)
libncurses.so.5 => /lib64/libncurses.so.5 (0x00007fcf29090000)
libortp.so.8 => /home/wk/linphone-3.5.2/oRTP/src/.libs/libortp.so.8 (0x00007fcf28e6c000)
libportaudio.so.2 => /usr/lib64/libportaudio.so.2 (0x00007fcf28c4b000)
libasound.so.2 => /usr/lib64/libasound.so.2 (0x00007fcf2896a000)
libspeexdsp.so.1 => /usr/lib64/libspeexdsp.so.1 (0x00007fcf28757000)
libv4l1.so.0 => /usr/lib64/libv4l1.so.0 (0x00007fcf28551000)
libv4l2.so.0 => /usr/lib64/libv4l2.so.0 (0x00007fcf28345000)
libavcodec.so.53 => /usr/lib64/libavcodec.so.53 (0x00007fcf27643000)
libavutil.so.51 => /usr/lib64/libavutil.so.51 (0x00007fcf27422000)
libswscale.so.2 => /usr/lib64/libswscale.so.2 (0x00007fcf271e1000)
libtheora.so.0 => /usr/lib64/libtheora.so.0 (0x00007fcf26fad000)
libogg.so.0 => /usr/lib64/libogg.so.0 (0x00007fcf26da6000)
libvpx.so.1 => /usr/lib64/libvpx.so.1 (0x00007fcf26b06000)
librt.so.1 => /lib64/librt.so.1 (0x00007fcf268fd000)
libXv.so.1 => /usr/lib64/libXv.so.1 (0x00007fcf266f7000)
libdl.so.2 => /lib64/libdl.so.2 (0x00007fcf264f3000)
libpthread.so.0 => /lib64/libpthread.so.0 (0x00007fcf262d5000)
libm.so.6 => /lib64/libm.so.6 (0x00007fcf25fde000)
libspeex.so.1 => /usr/lib64/libspeex.so.1 (0x00007fcf25dc4000)
libosip2.so.7 => /usr/lib64/libosip2.so.7 (0x00007fcf25bad000)
libnsl.so.1 => /lib64/libnsl.so.1 (0x00007fcf25995000)
libosipparser2.so.7 => /usr/lib64/libosipparser2.so.7 (0x00007fcf25761000)
libc.so.6 => /lib64/libc.so.6 (0x00007fcf253b6000)
libX11.so.6 => /usr/lib64/libX11.so.6 (0x00007fcf25077000)
libXext.so.6 => /usr/lib64/libXext.so.6 (0x00007fcf24e65000)
libosipparser2.so.6 => not found
libosip2.so.6 => not found
libz.so.1 => /lib64/libz.so.1 (0x00007fcf24c4d000)
libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007fcf248f6000)
libgmodule-2.0.so.0 => /usr/lib64/libgmodule-2.0.so.0 (0x00007fcf246f2000)
libffi.so.6 => /usr/lib64/libffi.so.6 (0x00007fcf244ea000)
libv4lconvert.so.0 => /usr/lib64/libv4lconvert.so.0 (0x00007fcf24274000)
libxvidcore.so.4 => /usr/lib64/libxvidcore.so.4 (0x00007fcf23f5a000)
libx264.so.120 => /usr/lib64/libx264.so.120 (0x00007fcf23c0d000)
libvorbisenc.so.2 => /usr/lib64/libvorbisenc.so.2 (0x00007fcf2373e000)
libvorbis.so.0 => /usr/lib64/libvorbis.so.0 (0x00007fcf23511000)
libvo-aacenc.so.0 => /usr/lib64/libvo-aacenc.so.0 (0x00007fcf232f3000)
libmp3lame.so.0 => /usr/lib64/libmp3lame.so.0 (0x00007fcf2307b000)
/lib64/ld-linux-x86-64.so.2 (0x00007fcf2ab20000)
libxcb.so.1 => /usr/lib64/libxcb.so.1 (0x00007fcf22e5a000)
libjpeg.so.8 => /usr/lib64/libjpeg.so.8 (0x00007fcf22c09000)
libXau.so.6 => /usr/lib64/libXau.so.6 (0x00007fcf22a05000)
libXdmcp.so.6 => /usr/lib64/libXdmcp.so.6 (0x00007fcf227ff000)
Is there any way to deal with this?

Resources