Le 02/06/2015 23:27, Fabricio Cannini a écrit :
> Hello there
>
> Is there a way to link 'libcudart.so' and 'libnvidia-ml.so' solely to
> their respective plugin .so files, not the main libraries/executables?
>
> This is the './configure' line i'm using:
>
> ./configure --enable-shared --enable-static --enable-pci --enable-cuda
> --enable-nvml --enable-cairo --enable-plugins='nvml,cuda'
>
>
> Software details:
> - Centos 6.5
> - gcc 4.4.7
> - hwloc 1.10.1
> - cuda 6.5-14
> - nvidia driver 340.29

Hello

Your configure line should do exactly what you want, and that's the
whole point of plugins:

$ ldd src/.libs/libhwloc.so
        linux-vdso.so.1 (0x00007fff5579b000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fd11e23c000)
        libnuma.so.1 => /usr/lib/x86_64-linux-gnu/libnuma.so.1 
(0x00007fd11e031000)
        libltdl.so.7 => /usr/lib/x86_64-linux-gnu/libltdl.so.7 
(0x00007fd11de26000)
        libpciaccess.so.0 => /usr/lib/x86_64-linux-gnu/libpciaccess.so.0 
(0x00007fd11dc1c000)
        libOpenCL.so.1 => /usr/lib/x86_64-linux-gnu/libOpenCL.so.1 
(0x00007fd11da12000)
        libXNVCtrl.so.0 => /usr/lib/libXNVCtrl.so.0 (0x00007fd11d80c000)
        libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 
(0x00007fd11d5fa000)
        libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 
(0x00007fd11d2b7000)
        libxml2.so.2 => /usr/lib/x86_64-linux-gnu/libxml2.so.2 
(0x00007fd11cf4f000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fd11cba6000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fd11e786000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fd11c9a2000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fd11c786000)
        libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 
(0x00007fd11c564000)
        liblzma.so.5 => /lib/x86_64-linux-gnu/liblzma.so.5 (0x00007fd11c341000)
        libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 
(0x00007fd11c13c000)
        libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 
(0x00007fd11bf37000)
(X librairies above are for the GL component here, but there's no libcudart or 
libnvidia-ml)
$ ldd src/.libs/hwloc_nvml.so 
        linux-vdso.so.1 (0x00007fffe27ce000)
        libltdl.so.7 => /usr/lib/x86_64-linux-gnu/libltdl.so.7 
(0x00007fdafc92f000)
        libnvidia-ml.so.1 => /usr/lib/x86_64-linux-gnu/libnvidia-ml.so.1 
(0x00007fdafc643000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fdafc299000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fdafc095000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 
(0x00007fdafbe78000)
        /lib64/ld-linux-x86-64.so.2 (0x00007fdafcd4c000)
$ ldd src/.libs/hwloc_cuda.so 
        linux-vdso.so.1 (0x00007fff19375000)
        libltdl.so.7 => /usr/lib/x86_64-linux-gnu/libltdl.so.7 
(0x00007f54c481f000)
        libcudart.so.6.0 => /usr/lib/x86_64-linux-gnu/libcudart.so.6.0 
(0x00007f54c45ce000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007f54c4224000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007f54c4020000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 
(0x00007f54c3d15000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 
(0x00007f54c3af7000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007f54c38ef000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f54c4c3c000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007f54c35ee000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 
(0x00007f54c33d7000)

If ldd shows libcudart and libnvidia-ml dependencies in libhwloc.so, you
may use "make V=1" to verify the link command-line that built these
libs, and then find the relevant link line/options in Makefile, and then
in Makefile.am

Brice

Reply via email to