日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于cmakelist随笔

發布時間:2024/1/1 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于cmakelist随笔 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

問題一:

/usr/bin/ld: CMakeFiles/clirarplugin.dir/cliplugin.cpp.o:(.data.rel.ro+0x40): multiple definition of `CliPlugin::staticMetaObject'; CMakeFiles/clirarplugin.dir/clirarplugin_autogen/include/moc_cliplugin.cpp.o:(.data.rel.ro+0x40): first defined here /usr/bin/ld: CMakeFiles/clirarplugin.dir/cliplugin.cpp.o: in function `CliPluginFactory::qt_static_metacall(QObject*, QMetaObject::Call, int, void**)':

解決方案:

// 缺少dtk相關的庫的鏈接文件

// 添加cmake文件內容后注意需要刪除緩存文件,再編譯。

pkg_search_module(DtkWidget REQUIRED dtkwidget) include_directories(${DtkWidget_INCLUDE_DIRS})pkg_search_module(DtkCore REQUIRED dtkcore) include_directories(${DtkCore_INCLUDE_DIRS})set(LIBS_INCLUDE_DIRS ${DtkWidget_LIBRARIES}${DtkCore_LIBRARIES}${LibArchive_LIBRARIES} ).....target_link_libraries(${LIB_NAME} ${LIBS_INCLUDE_DIRS})

問題二:undefine symbol

沒有找到他的定義函數,

1.在頭文件中沒有聲明這個函數,

2.頭文件可能沒有在鏈接中包含進來。

include_directories("頭文件目錄")

問題三: 查詢需要加載的模塊

方法1:

pkg_search_module(LibArchive REQUIRED libarchive)

?cmake --help-module-list | grep -i?LibArchive

方法2:

pkg-config --list-all | grep -i multimedia

問題四:?構建deb包命令

// 下載依賴?

# 自動下載編譯依賴,不要偷懶發現依賴不足就添加到debian/control里 sudo apt build-dep . sudo apt-get install build-essential dpkg-buildpackage?-us -uc

// 查看包的安裝包內的相關信息

dpkg -c deepin-compressor_1.0_amd64.deb

// 查看已經安裝的應用的相關信息

dpkg -L cups

問題五:查看動態庫的依賴庫

ldd -r libcompressor-common.so lx777@lx777:/data/home/lx777/02-work/02-compressor/01-code/stock-dev/compressor/output/compressor-lib$ ldd -r libcompressor-common.so linux-vdso.so.1 (0x00007ffdab64b000)libQt5Widgets.so.5 => /lib/x86_64-linux-gnu/libQt5Widgets.so.5 (0x00007ff8c8527000)libKF5Codecs.so.5 => /lib/x86_64-linux-gnu/libKF5Codecs.so.5 (0x00007ff8c84eb000)libdtkwidget.so.5 => /lib/x86_64-linux-gnu/libdtkwidget.so.5 (0x00007ff8c8265000)libdtkgui.so.5 => /lib/x86_64-linux-gnu/libdtkgui.so.5 (0x00007ff8c81e9000)libdtkcore.so.5 => /lib/x86_64-linux-gnu/libdtkcore.so.5 (0x00007ff8c80f6000)libcompressor-ChardetDetector.so => /data/home/lx777/02-work/02-compressor/01-code/stock-dev/compressor/output/compressor-lib/libcompressor-ChardetDetector.so (0x00007ff8c80cd000)libQt5Gui.so.5 => /lib/x86_64-linux-gnu/libQt5Gui.so.5 (0x00007ff8c7b42000)libQt5Core.so.5 => /lib/x86_64-linux-gnu/libQt5Core.so.5 (0x00007ff8c7647000)libstdc++.so.6 => /lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007ff8c74c3000)libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007ff8c7340000)libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007ff8c7326000)libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007ff8c7165000)libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007ff8c7142000)libgsettings-qt.so.1 => /lib/x86_64-linux-gnu/libgsettings-qt.so.1 (0x00007ff8c7134000)librsvg-2.so.2 => /lib/x86_64-linux-gnu/librsvg-2.so.2 (0x00007ff8c6bcc000)libgio-2.0.so.0 => /lib/x86_64-linux-gnu/libgio-2.0.so.0 (0x00007ff8c6a0e000)libgdk_pixbuf-2.0.so.0 => /lib/x86_64-linux-gnu/libgdk_pixbuf-2.0.so.0 (0x00007ff8c69e8000)libgobject-2.0.so.0 => /lib/x86_64-linux-gnu/libgobject-2.0.so.0 (0x00007ff8c6993000)libcairo.so.2 => /lib/x86_64-linux-gnu/libcairo.so.2 (0x00007ff8c6871000)libdframeworkdbus.so.2 => /lib/x86_64-linux-gnu/libdframeworkdbus.so.2 (0x00007ff8c64d9000)libXext.so.6 => /lib/x86_64-linux-gnu/libXext.so.6 (0x00007ff8c64c4000)libX11.so.6 => /lib/x86_64-linux-gnu/libX11.so.6 (0x00007ff8c6383000)libXi.so.6 => /lib/x86_64-linux-gnu/libXi.so.6 (0x00007ff8c6371000)libxcb-util.so.0 => /lib/x86_64-linux-gnu/libxcb-util.so.0 (0x00007ff8c6367000)libxcb.so.1 => /lib/x86_64-linux-gnu/libxcb.so.1 (0x00007ff8c633b000)libstartup-notification-1.so.0 => /lib/x86_64-linux-gnu/libstartup-notification-1.so.0 (0x00007ff8c632f000)libQt5MultimediaWidgets.so.5 => /lib/x86_64-linux-gnu/libQt5MultimediaWidgets.so.5 (0x00007ff8c630f000)libpulse-mainloop-glib.so.0 => /lib/x86_64-linux-gnu/libpulse-mainloop-glib.so.0 (0x00007ff8c6309000)libpulse.so.0 => /lib/x86_64-linux-gnu/libpulse.so.0 (0x00007ff8c62b5000)libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007ff8c6196000)libQt5Multimedia.so.5 => /lib/x86_64-linux-gnu/libQt5Multimedia.so.5 (0x00007ff8c6078000)libQt5X11Extras.so.5 => /lib/x86_64-linux-gnu/libQt5X11Extras.so.5 (0x00007ff8c6071000)libQt5DBus.so.5 => /lib/x86_64-linux-gnu/libQt5DBus.so.5 (0x00007ff8c5fda000)libQt5Xml.so.5 => /lib/x86_64-linux-gnu/libQt5Xml.so.5 (0x00007ff8c5f9b000)libQt5Network.so.5 => /lib/x86_64-linux-gnu/libQt5Network.so.5 (0x00007ff8c5dfa000)libQt5Concurrent.so.5 => /lib/x86_64-linux-gnu/libQt5Concurrent.so.5 (0x00007ff8c5df1000)libGL.so.1 => /lib/x86_64-linux-gnu/libGL.so.1 (0x00007ff8c5d5b000)libpng16.so.16 => /lib/x86_64-linux-gnu/libpng16.so.16 (0x00007ff8c5d22000)libharfbuzz.so.0 => /lib/x86_64-linux-gnu/libharfbuzz.so.0 (0x00007ff8c5c1f000)libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007ff8c5c02000)libicui18n.so.63 => /lib/x86_64-linux-gnu/libicui18n.so.63 (0x00007ff8c5934000)libicuuc.so.63 => /lib/x86_64-linux-gnu/libicuuc.so.63 (0x00007ff8c5767000)libpcre2-16.so.0 => /lib/x86_64-linux-gnu/libpcre2-16.so.0 (0x00007ff8c56ec000)libdouble-conversion.so.1 => /lib/x86_64-linux-gnu/libdouble-conversion.so.1 (0x00007ff8c56d5000)libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007ff8c56d0000)/lib64/ld-linux-x86-64.so.2 (0x00007ff8c8bb3000)libpangocairo-1.0.so.0 => /lib/x86_64-linux-gnu/libpangocairo-1.0.so.0 (0x00007ff8c56c0000)libpangoft2-1.0.so.0 => /lib/x86_64-linux-gnu/libpangoft2-1.0.so.0 (0x00007ff8c56a5000)libpango-1.0.so.0 => /lib/x86_64-linux-gnu/libpango-1.0.so.0 (0x00007ff8c565a000)libfontconfig.so.1 => /lib/x86_64-linux-gnu/libfontconfig.so.1 (0x00007ff8c5614000)libcroco-0.6.so.3 => /lib/x86_64-linux-gnu/libcroco-0.6.so.3 (0x00007ff8c55d6000)libxml2.so.2 => /lib/x86_64-linux-gnu/libxml2.so.2 (0x00007ff8c542b000)libgmodule-2.0.so.0 => /lib/x86_64-linux-gnu/libgmodule-2.0.so.0 (0x00007ff8c5425000)libmount.so.1 => /lib/x86_64-linux-gnu/libmount.so.1 (0x00007ff8c53c4000)libselinux.so.1 => /lib/x86_64-linux-gnu/libselinux.so.1 (0x00007ff8c5399000)libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007ff8c537f000)libffi.so.6 => /lib/x86_64-linux-gnu/libffi.so.6 (0x00007ff8c5375000)libpixman-1.so.0 => /lib/x86_64-linux-gnu/libpixman-1.so.0 (0x00007ff8c52ce000)libfreetype.so.6 => /lib/x86_64-linux-gnu/libfreetype.so.6 (0x00007ff8c5212000)libxcb-shm.so.0 => /lib/x86_64-linux-gnu/libxcb-shm.so.0 (0x00007ff8c520b000)libxcb-render.so.0 => /lib/x86_64-linux-gnu/libxcb-render.so.0 (0x00007ff8c51fc000)libXrender.so.1 => /lib/x86_64-linux-gnu/libXrender.so.1 (0x00007ff8c51ef000)librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007ff8c51e5000)libXau.so.6 => /lib/x86_64-linux-gnu/libXau.so.6 (0x00007ff8c51e0000)libXdmcp.so.6 => /lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007ff8c51d6000)libX11-xcb.so.1 => /lib/x86_64-linux-gnu/libX11-xcb.so.1 (0x00007ff8c51d1000)libQt5OpenGL.so.5 => /lib/x86_64-linux-gnu/libQt5OpenGL.so.5 (0x00007ff8c5177000)libpulsecommon-12.2.so => /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-12.2.so (0x00007ff8c50f1000)libcap.so.2 => /lib/x86_64-linux-gnu/libcap.so.2 (0x00007ff8c50e9000)libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007ff8c5094000)libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007ff8c5020000)libGLX.so.0 => /lib/x86_64-linux-gnu/libGLX.so.0 (0x00007ff8c4fec000)libGLdispatch.so.0 => /lib/x86_64-linux-gnu/libGLdispatch.so.0 (0x00007ff8c4f2f000)libgraphite2.so.3 => /lib/x86_64-linux-gnu/libgraphite2.so.3 (0x00007ff8c4f02000)libicudata.so.63 => /lib/x86_64-linux-gnu/libicudata.so.63 (0x00007ff8c3510000)libthai.so.0 => /lib/x86_64-linux-gnu/libthai.so.0 (0x00007ff8c3505000)libfribidi.so.0 => /lib/x86_64-linux-gnu/libfribidi.so.0 (0x00007ff8c34e8000)libexpat.so.1 => /lib/x86_64-linux-gnu/libexpat.so.1 (0x00007ff8c34ab000)libuuid.so.1 => /lib/x86_64-linux-gnu/libuuid.so.1 (0x00007ff8c34a2000)liblzma.so.5 => /usr/local/lib/liblzma.so.5 (0x00007ff8c3478000)libblkid.so.1 => /lib/x86_64-linux-gnu/libblkid.so.1 (0x00007ff8c3423000)libbsd.so.0 => /lib/x86_64-linux-gnu/libbsd.so.0 (0x00007ff8c3409000)libICE.so.6 => /lib/x86_64-linux-gnu/libICE.so.6 (0x00007ff8c33ea000)libSM.so.6 => /lib/x86_64-linux-gnu/libSM.so.6 (0x00007ff8c33df000)libXtst.so.6 => /lib/x86_64-linux-gnu/libXtst.so.6 (0x00007ff8c33d5000)libsystemd.so.0 => /lib/x86_64-linux-gnu/libsystemd.so.0 (0x00007ff8c3334000)libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007ff8c3328000)libsndfile.so.1 => /lib/x86_64-linux-gnu/libsndfile.so.1 (0x00007ff8c32ac000)libasyncns.so.0 => /lib/x86_64-linux-gnu/libasyncns.so.0 (0x00007ff8c32a4000)libdatrie.so.1 => /lib/x86_64-linux-gnu/libdatrie.so.1 (0x00007ff8c3298000)liblz4.so.1 => /lib/x86_64-linux-gnu/liblz4.so.1 (0x00007ff8c3279000)libgcrypt.so.20 => /lib/x86_64-linux-gnu/libgcrypt.so.20 (0x00007ff8c315b000)libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007ff8c3142000)libFLAC.so.8 => /lib/x86_64-linux-gnu/libFLAC.so.8 (0x00007ff8c30d9000)libogg.so.0 => /lib/x86_64-linux-gnu/libogg.so.0 (0x00007ff8c30cd000)libvorbis.so.0 => /lib/x86_64-linux-gnu/libvorbis.so.0 (0x00007ff8c309f000)libvorbisenc.so.2 => /lib/x86_64-linux-gnu/libvorbisenc.so.2 (0x00007ff8c2ff4000)libgpg-error.so.0 => /lib/x86_64-linux-gnu/libgpg-error.so.0 (0x00007ff8c2fd1000)

問題五:查看動態庫的導出函數

readelf -s lib.so

問題六 :動態庫相對目錄鏈接

設置rpath的值來設置相對于應用程序的動態鏈接庫的地址.

SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb -Wl,-rpath=./compressor-lib:/usr/lib/deepin-compressor/plugins:/lib") #-Wl,-rpath=./ SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wl,-rpath=./compressor-lib:/usr/lib/deepin-compressor/plugins:/lib") #-Wallset(CMAKE_SKIP_BUILD_RPATH FALSE) set(CMAKE_BUILD_WITH_INSTALL_RPATH TRUE) set(CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE)

問題七:代碼打補丁

7.1 git 方式

git apply 補丁名.patch

7.2 一次導入所有補丁

export QUILT_PATCHES=debian/patches // patch的目錄 。debian/patches quilt push -a

8/編譯鏈接錯誤?

/lib/x86_64-linux-gnu/libz.so.1: error adding symbols: DSO missing from command line

?解決方案

?

總結

以上是生活随笔為你收集整理的关于cmakelist随笔的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。