PDA

View Full Version : Run an application in Qt4.6 Linux



Wu
23rd December 2009, 14:02
Hi, all,

I can build an application both in terminal and Qt4.6, but it can only run in terminal. When I tried to run it in Qt4.6, I got this error message:" error while loading shared libraries: libcudart.so.2: cannot open shared object file: No such file or directory". I think it might be a library dependencies problem. The following is my .pro file
///////////////////////////////////////////////////////////////////////////////////////////////////
# Path to opencv install
OPENCV_DIR = /usr/local/opencv

# Path to cuda SDK install
CUDA_SDK = /home/wu/NVIDIA_GPU_Computing_SDK/C

# Path to cuda toolkit install
CUDA_DIR = /usr/local/cuda
#CUDA_DIR = $$system(which nvcc | sed 's,/bin/nvcc$,,')

# GPU architecture
CUDA_ARCH = sm_11


PROJECT_DIR = $$system(pwd)


#CONFIG += create_prl

#CONFIG += link_prl

TEMPLATE = app
#TARGET = release_binary
#CONFIG += release
QMAKE_CXXFLAGS_RELEASE =-O3
DESTDIR = ../bin


LIBS += -lcudart -lcutil
LIBS += -lGLEW -lGL -lGLU
LIBS += -lcxcore -lcv -lhighgui -lcvaux -lml

RESOURCES += ressources.qrc
OBJECTS_DIR = $$PROJECT_DIR/Obj
NVCCFLAGS = --compile --host-compilation \'C++\' \
--compiler-options -fno-strict-aliasing -use_fast_math


DEPENDPATH += $$PROJECT_DIR/Gui
DEPENDPATH += $$PROJECT_DIR/Motion
DEPENDPATH += $$PROJECT_DIR/Cuda
DEPENDPATH += $$PROJECT_DIR/Core
DEPENDPATH += $$PROJECT_DIR/Media
DEPENDPATH += $$PROJECT_DIR/OpenGL
DEPENDPATH += $$PROJECT_DIR


INCLUDEPATH += $$PROJECT_DIR/Gui
INCLUDEPATH += $$PROJECT_DIR/Motion
INCLUDEPATH += $$PROJECT_DIR/Cuda
INCLUDEPATH += $$PROJECT_DIR/Media
INCLUDEPATH += $$PROJECT_DIR/Core
INCLUDEPATH += $$PROJECT_DIR/OpenGL
INCLUDEPATH += $$PROJECT_DIR


QT += opengl



INCLUDEPATH += $$CUDA_DIR/include
QMAKE_LIBDIR += $$CUDA_DIR/lib64

INCLUDEPATH += $$CUDA_SDK/common/inc/
QMAKE_LIBDIR += $$CUDA_SDK/lib
QMAKE_LIBDIR += $$CUDA_SDK/common/lib

INCLUDEPATH += $$OPENCV_DIR/include
QMAKE_LIBDIR += $$OPENCV_DIR/lib

# Input
FORMS += paramsFolki.ui

HEADERS += LIVA.hpp
HEADERS += Logger.hpp
HEADERS += Singleton.hpp
HEADERS += mainwindows.h
HEADERS += paramsFolki.hpp
HEADERS += LiGL2Dwidget.hpp
HEADERS += MediaPlayer.hpp
HEADERS += LkCvWidget.hpp
HEADERS += FolkiOpticalFlow.hpp
HEADERS += OpticalFlow.hpp
HEADERS += endianness.h
HEADERS += FlotRender.hpp
HEADERS += GestionBuffer.hpp

SOURCES += main.cpp
SOURCES += paramsFolki.cpp
SOURCES += LiGL2Dwidget.cpp
SOURCES += MediaPlayer.cpp
SOURCES += LkCvWidget.cpp
SOURCES += FolkiOpticalFlow.cpp
SOURCES += OpticalFlow.cpp
SOURCES += endianness.c
SOURCES += FlotRender.cpp


CUDA_SOURCES += ConvolutionSeparable.cu
CUDA_SOURCES += ConvolutionSeparableFlat.cu
CUDA_SOURCES += ConvolutionSeparableU.cu
CUDA_SOURCES += ConvolutionSeparableFlatU.cu
CUDA_SOURCES += DeriveGradient.cu
CUDA_SOURCES += FolkiOpticalFlowKernels.cu
CUDA_SOURCES += PyramidBurt.cu
CUDA_SOURCES += PyramidHaar.cu
CUDA_SOURCES += DivRot.cu
CUDA_SOURCES += RenderGL.cu
CUDA_SOURCES += Morpho.cu
CUDA_SOURCES += Reduction.cu
CUDA_SOURCES += Propage.cu

HEADERS += ConvolutionSeparableFlat.hpp
HEADERS += ConvolutionSeparable.hpp
HEADERS += ConvolutionSeparableFlatU.hpp
HEADERS += ConvolutionSeparableU.hpp
HEADERS += DeriveGradient.hpp
HEADERS += FolkiOpticalFlowKernels.hpp
HEADERS += LiCuda.hpp
HEADERS += PyramidBurt.hpp
HEADERS += PyramidHaar.hpp
HEADERS += DivRot.hpp
HEADERS += RenderGL.hpp
HEADERS += Morpho.hpp
HEADERS += Reduction.hpp
HEADERS += Propage.hpp

CUDA_INC = $$join(INCLUDEPATH,' -I','-I',' ')


cuda.output = ${OBJECTS_DIR}${QMAKE_FILE_BASE}_cuda.o
cuda.commands = /usr/local/cuda/bin/nvcc -arch=$$CUDA_ARCH -c $$NVCCFLAGS $$CUDA_INC $$LIBS ${QMAKE_FILE_NAME} -o ${QMAKE_FILE_OUT}
cuda.dependcy_type = TYPE_C
cuda.depend_command = /usr/local/cuda/bin/nvcc -M $$CUDA_INC $$NVCCFLAGS ${QMAKE_FILE_NAME} |sed "s,^.*:,,"|sed "s,^ *,," | tr -d '\\\n'
cuda.input = CUDA_SOURCES
QMAKE_EXTRA_UNIX_COMPILERS += cuda

/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
Please help me out. Thank you very much.

Best,
Wu

high_flyer
23rd December 2009, 14:13
make sure libcudart.so.2 is located in the paths specified under LD_LIBRARY_PATH

Wu
23rd December 2009, 14:36
Hi,

Thank you for your reply. My LD_LIBRARY_PATH variable for build and run environment is /home/wu/qtsdk-2009.05/lib/qtcreator. I moved libcudart.so.2 file to /home/wu/qtsdk-2009.05/lib/qtcreator directory and tried to run again, but I still got the same error message.

Best,
Wu

high_flyer
23rd December 2009, 15:41
what does

ldd <appname>
return?

Wu
23rd December 2009, 16:31
linux-vdso.so.1 => (0x00007fffb1a8d000)
libcudart.so.2 => /usr/local/cuda/lib64/libcudart.so.2 (0x00007fa531498000)
libGLEW.so.1.5 => /usr/lib/libGLEW.so.1.5 (0x00007fa531253000)
libcxcore.so.4 => /usr/local/opencv/lib/libcxcore.so.4 (0x00007fa530dbc000)
libcv.so.4 => /usr/local/opencv/lib/libcv.so.4 (0x00007fa53093b000)
libhighgui.so.4 => /usr/local/opencv/lib/libhighgui.so.4 (0x00007fa5306fc000)
libcvaux.so.4 => /usr/local/opencv/lib/libcvaux.so.4 (0x00007fa5303f8000)
libml.so.4 => /usr/local/opencv/lib/libml.so.4 (0x00007fa53016e000)
libQtOpenGL.so.4 => /home/wu/qtsdk-2009.05/qt/lib/libQtOpenGL.so.4 (0x00007fa52fe97000)
libQtGui.so.4 => /home/wu/qtsdk-2009.05/qt/lib/libQtGui.so.4 (0x00007fa52f186000)
libQtCore.so.4 => /home/wu/qtsdk-2009.05/qt/lib/libQtCore.so.4 (0x00007fa52ecd6000)
libGLU.so.1 => /usr/lib/libGLU.so.1 (0x00007fa52ea64000)
libGL.so.1 => /usr/lib/libGL.so.1 (0x00007fa52e875000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00007fa52e659000)
libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0x00007fa52e34c000)
libm.so.6 => /lib/libm.so.6 (0x00007fa52e0c7000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00007fa52deaf000)
libc.so.6 => /lib/libc.so.6 (0x00007fa52db3d000)
libdl.so.2 => /lib/libdl.so.2 (0x00007fa52d939000)
librt.so.1 => /lib/librt.so.1 (0x00007fa52d731000)
libXmu.so.6 => /usr/lib/libXmu.so.6 (0x00007fa52d518000)
libXi.so.6 => /usr/lib/libXi.so.6 (0x00007fa52d30d000)
libXext.so.6 => /usr/lib/libXext.so.6 (0x00007fa52d0fb000)
libX11.so.6 => /usr/lib/libX11.so.6 (0x00007fa52cdf4000)
libavformat.so.52 => /usr/lib/libavformat.so.52 (0x00007fa52cafc000)
libavcodec.so.52 => /usr/lib/libavcodec.so.52 (0x00007fa52c149000)
libz.so.1 => /lib/libz.so.1 (0x00007fa52bf31000)
libgomp.so.1 => /usr/lib/libgomp.so.1 (0x00007fa52bd28000)
libgthread-2.0.so.0 => /usr/lib/libgthread-2.0.so.0 (0x00007fa52bb23000)
libgtk-x11-2.0.so.0 => /usr/lib/libgtk-x11-2.0.so.0 (0x00007fa52b527000)
libgdk-x11-2.0.so.0 => /usr/lib/libgdk-x11-2.0.so.0 (0x00007fa52b285000)
libatk-1.0.so.0 => /usr/lib/libatk-1.0.so.0 (0x00007fa52b065000)
libpangoft2-1.0.so.0 => /usr/lib/libpangoft2-1.0.so.0 (0x00007fa52ae37000)
libpangocairo-1.0.so.0 => /usr/lib/libpangocairo-1.0.so.0 (0x00007fa52ac2b000)
libgio-2.0.so.0 => /usr/lib/libgio-2.0.so.0 (0x00007fa52a9ae000)
libcairo.so.2 => /usr/lib/libcairo.so.2 (0x00007fa52a72b000)
libpango-1.0.so.0 => /usr/lib/libpango-1.0.so.0 (0x00007fa52a4e2000)
libfreetype.so.6 => /usr/lib/libfreetype.so.6 (0x00007fa52a25c000)
libfontconfig.so.1 => /usr/lib/libfontconfig.so.1 (0x00007fa52a02a000)
libgdk_pixbuf-2.0.so.0 => /usr/lib/libgdk_pixbuf-2.0.so.0 (0x00007fa529e0e000)
libgobject-2.0.so.0 => /usr/lib/libgobject-2.0.so.0 (0x00007fa529bc8000)
libgmodule-2.0.so.0 => /usr/lib/libgmodule-2.0.so.0 (0x00007fa5299c4000)
libglib-2.0.so.0 => /usr/lib/libglib-2.0.so.0 (0x00007fa5296ff000)
libpng12.so.0 => /usr/lib/libpng12.so.0 (0x00007fa5294d8000)
libtiff.so.4 => /usr/lib/libtiff.so.4 (0x00007fa52927d000)
libjpeg.so.62 => /usr/lib/libjpeg.so.62 (0x00007fa52905a000)
libswscale.so.0 => /usr/lib/libswscale.so.0 (0x00007fa528e2e000)
libraw1394.so.8 => /usr/lib/libraw1394.so.8 (0x00007fa528c27000)
libdc1394.so.22 => /usr/lib/libdc1394.so.22 (0x00007fa5289b9000)
libXrender.so.1 => /usr/lib/libXrender.so.1 (0x00007fa5287af000)
libSM.so.6 => /usr/lib/libSM.so.6 (0x00007fa5285a6000)
libICE.so.6 => /usr/lib/libICE.so.6 (0x00007fa52838b000)
libGLcore.so.1 => /usr/lib/libGLcore.so.1 (0x00007fa526f61000)
libnvidia-tls.so.1 => /usr/lib/tls/libnvidia-tls.so.1 (0x00007fa5317d0000)
/lib64/ld-linux-x86-64.so.2 (0x00007fa5316d8000)
libXt.so.6 => /usr/lib/libXt.so.6 (0x00007fa526cfb000)
libXau.so.6 => /usr/lib/libXau.so.6 (0x00007fa526af8000)
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x00007fa5268dc000)
libavutil.so.49 => /usr/lib/libavutil.so.49 (0x00007fa5266cd000)
libgsm.so.1 => /usr/lib/libgsm.so.1 (0x00007fa5264c0000)
libschroedinger-1.0.so.0 => /usr/lib/libschroedinger-1.0.so.0 (0x00007fa52624c000)
libspeex.so.1 => /usr/lib/libspeex.so.1 (0x00007fa526032000)
libtheora.so.0 => /usr/lib/libtheora.so.0 (0x00007fa525de5000)
libvorbisenc.so.2 => /usr/lib/libvorbisenc.so.2 (0x00007fa525a0b000)
libvorbis.so.0 => /usr/lib/libvorbis.so.0 (0x00007fa5257de000)
libpcre.so.3 => /lib/libpcre.so.3 (0x00007fa5255ae000)
libXinerama.so.1 => /usr/lib/libXinerama.so.1 (0x00007fa5253ac000)
libXrandr.so.2 => /usr/lib/libXrandr.so.2 (0x00007fa5251a3000)
libXcursor.so.1 => /usr/lib/libXcursor.so.1 (0x00007fa524f99000)
libXcomposite.so.1 => /usr/lib/libXcomposite.so.1 (0x00007fa524d96000)
libXdamage.so.1 => /usr/lib/libXdamage.so.1 (0x00007fa524b94000)
libXfixes.so.3 => /usr/lib/libXfixes.so.3 (0x00007fa52498f000)
libselinux.so.1 => /lib/libselinux.so.1 (0x00007fa524773000)
libpixman-1.so.0 => /usr/lib/libpixman-1.so.0 (0x00007fa52452e000)
libdirectfb-1.0.so.0 => /usr/lib/libdirectfb-1.0.so.0 (0x00007fa5242ba000)
libfusion-1.0.so.0 => /usr/lib/libfusion-1.0.so.0 (0x00007fa5240b1000)
libdirect-1.0.so.0 => /usr/lib/libdirect-1.0.so.0 (0x00007fa523e9b000)
libxcb-render-util.so.0 => /usr/lib/libxcb-render-util.so.0 (0x00007fa523c97000)
libxcb-render.so.0 => /usr/lib/libxcb-render.so.0 (0x00007fa523a8e000)
libexpat.so.1 => /usr/lib/libexpat.so.1 (0x00007fa523864000)
libuuid.so.1 => /lib/libuuid.so.1 (0x00007fa52365f000)
libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0x00007fa52345a000)
liboil-0.3.so.0 => /usr/lib/liboil-0.3.so.0 (0x00007fa5231cb000)
libogg.so.0 => /usr/lib/libogg.so.0 (0x00007fa522fc5000)

high_flyer
28th December 2009, 14:12
well, libcudart.so.2 is found.
What happens if you launch creator from the console and then try to run the application from creator?

Wu
29th December 2009, 15:34
I got the following message:

Starting /home/wu/Desktop/E47/FOLKI_GPU/bin/FolkiGpu...
/home/wu/Desktop/E47/FOLKI_GPU/bin/FolkiGpu: error while loading shared libraries: libcudart.so.2: cannot open shared object file: No such file or directory
/home/wu/Desktop/E47/FOLKI_GPU/bin/FolkiGpu exited with code 127

Wu

high_flyer
29th December 2009, 15:58
Just add libcudart.so.2's location to your LD_LIBRARY_PATH.
I am quite sure it will fix the problem.

squidge
29th December 2009, 16:16
I moved libcudart.so.2 file to /home/wu/qtsdk-2009.05/lib/qtcreator directory and tried to run again, but I still got the same error message.libcudart.so.2 is probably just a soft-link to another file in the same directory (or depends on other files in that directory). Instead of copying the file elsewhere, include the path to that file in your LD_LIBRARY_PATH, as already suggested.

Wu
29th December 2009, 21:22
I added the directory (/usr/local/cuda/lib64/) containing libcudart.so.2 to LD_LIBRARY_PATH variable in the Build and Run Environment of the Projects settings. The application still can not run in Qt. How can I add a directory to LD_LIBRARY_PATH in Qt? Thank you very much.

Best,
Wu

Wu
29th December 2009, 21:27
It works now. Thank you very much.

Best,
Wu