Ubuntu20.04 cmake最终解决找不到`zstd`模块

Ubuntu20.04 cmake最终解决找不到zstd模块

出现的问题

终端显示

CMake Error at CMakeLists.txt:18 (ADD_LIBRARY):
  Target "FEDI" links to target "PkgConfig::libzstd" but the target was not
  found.  Perhaps a find_package() call is missing for an IMPORTED target, or
  an ALIAS target is missing?

cmakeError.log部分显示

Performing C SOURCE FILE Test CMAKE_HAVE_LIBC_PTHREAD failed with the following output:
Change Dir: /media/lihatoo/LHT/afile/akang/fast_EDI/dv-module/fast-edi/build/CMakeFiles/CMakeTmp

Run Build Command(s):/usr/bin/make -f Makefile cmTC_6de1b/fast && /usr/bin/make  -f CMakeFiles/cmTC_6de1b.dir/build.make CMakeFiles/cmTC_6de1b.dir/build
make[1]: 进入目录“/media/lihatoo/LHT/afile/akang/fast_EDI/dv-module/fast-edi/build/CMakeFiles/CMakeTmp”
Building C object CMakeFiles/cmTC_6de1b.dir/src.c.o
/usr/bin/cc -DCMAKE_HAVE_LIBC_PTHREAD   -o CMakeFiles/cmTC_6de1b.dir/src.c.o -c /media/lihatoo/LHT/afile/akang/fast_EDI/dv-module/fast-edi/build/CMakeFiles/CMakeTmp/src.c
Linking C executable cmTC_6de1b
/usr/bin/cmake -E cmake_link_script CMakeFiles/cmTC_6de1b.dir/link.txt --verbose=1
/usr/bin/cc CMakeFiles/cmTC_6de1b.dir/src.c.o -o cmTC_6de1b 
/usr/bin/ld: CMakeFiles/cmTC_6de1b.dir/src.c.o: in function `main':
src.c:(.text+0x46): undefined reference to `pthread_create'
/usr/bin/ld: src.c:(.text+0x52): undefined reference to `pthread_detach'
/usr/bin/ld: src.c:(.text+0x5e): undefined reference to `pthread_cancel'
/usr/bin/ld: src.c:(.text+0x6f): undefined reference to `pthread_join'
collect2: error: ld returned 1 exit status
make[1]: *** [CMakeFiles/cmTC_6de1b.dir/build.make:99:cmTC_6de1b] 错误 1
make[1]: 离开目录“/media/lihatoo/LHT/afile/akang/fast_EDI/dv-module/fast-edi/build/CMakeFiles/CMakeTmp”
make: *** [Makefile:127:cmTC_6de1b/fast] 错误 2

解决

首先试试直接改代码可不可以,不可以重装试试,这里给出重装步骤,已成功

  • 首先试试了重新安装相应模块
    确认可以之后

  • 删除libzstd1与libzstd-dev模块
    可以直接最后的强制删除

sudo apt-get remove --purge libzstd-dev libzstd1

不行,依赖项多杂有限制

sudo apt-get autoremove

先清一下不需要的包

 sudo apt-get check

检查一下冲突,有冲突包也删除就行

sudo dpkg --remove --force-depends libzstd-dev libzstd1

强制删除即可

  • 重装libzstd1与libzstd-dev
    无法使用apt-get安装,在https://ubuntu.pkgs.org/20.04/ubuntu-updates-main-amd64/libzstd1_1.4.4+dfsg-3ubuntu0.1_amd64.deb.html
    上找到.deb的网址使用指令wget http://archive.ubuntu.com/ubuntu/pool/main/libz/libzstd/libzstd-dev_1.4.4+dfsg-3ubuntu0.1_amd64.deb下载deb即可,同样可以找到libzstd1即可wget http://archive.ubuntu.com/ubuntu/pool/main/libz/libzstd/libzstd1_1.4.4+dfsg-3ubuntu0.1_amd64.deb

先安装libzstd1,后安装libzstd-dev
安装libzstd1

ar x libzstd1_1.4.4+dfsg-3ubuntu0.1_amd64.deb
sudo tar xvf data.tar.xz -C /
ls /usr/lib/x86_64-linux-gnu/libzstd.so.1#用来验证的
dpkg -s libzstd1#也可以用来验证

安装libzstd-dev

sudo apt-get clean
sudo apt-get autoclean#清理一下安装缓存
sudo dpkg --force-all -i libzstd-dev_1.4.4+dfsg-3ubuntu0.1_amd64.deb#强制安装,不需要的话可以只是去掉--force-all
dpkg -s libzstd-dev#检查,可

重新执行cmake
错误重复,添加类似代码

# Init CMake (require at least version 3.10.0)
CMAKE_MINIMUM_REQUIRED(VERSION 3.10.0)


# Project name and version
PROJECT(fast-edi
	VERSION 1.0.0
	LANGUAGES C CXX)

# Define installation paths
INCLUDE(GNUInstallDirs)
# find_package(Boost REQUIRED COMPONENTS filesystem)
FIND_PACKAGE(dv-processing 1.7.9 REQUIRED)#1.7.9-1~focal
FIND_PACKAGE(dv 1.6.2 REQUIRED)#1.6.2-1~focal

find_package(PkgConfig REQUIRED)#添加的

pkg_check_modules(LIBZSTD REQUIRED IMPORTED_TARGET libzstd)#添加的

find_library(LIBZSTD_LIBRARY NAMES zstd libzstd)#添加的
if(NOT LIBZSTD_LIBRARY)#添加的
  message(FATAL_ERROR "Could not find the libzstd library")
endif()#添加的

add_library(PkgConfig::libzstd UNKNOWN IMPORTED)#添加的
set_target_properties(PkgConfig::libzstd PROPERTIES#添加的
  IMPORTED_LOCATION ${LIBZSTD_LIBRARY}#添加的
)#添加的


# Compile this module (standard C++ file, no additional dependencies)
ADD_LIBRARY(FEDI SHARED FEDI.cpp)

SET_TARGET_PROPERTIES(FEDI
	PROPERTIES
	PREFIX "fedi_"
)

TARGET_LINK_LIBRARIES(FEDI PRIVATE dv::sdk)
target_link_libraries(FEDI PRIVATE PkgConfig::libzstd)#添加的

INSTALL(TARGETS FEDI DESTINATION ${DV_MODULES_DIR})

Ubuntu 20.04上安装CMake可以按照以下步骤进行操作: 1. 首先,确保您的系统已经安装了openssl库。您可以使用以下命令来安装:sudo apt-get install libssl-dev。 2. 下载CMake的release版本,可以访问CMake的官方网站或使用以下命令下载:cd /usr && wget https://cmake.org/files/v3.24/cmake-3.24.1-linux-aarch64.tar.gz。 3. 解压下载的CMake文件,可以使用以下命令解压:tar -zxvf cmake-3.24.1-linux-aarch64.tar.gz。这将在当前目录下创建一个名为cmake-3.24.1-linux-aarch64的文件夹。 4. 接下来,将CMake添加到系统的环境变量中。您可以通过编辑`~/.bashrc`文件并将以下行添加到文件的末尾来实现这一点:export PATH=/usr/cmake-3.24.1-linux-aarch64/bin:$PATH。保存并关闭文件。 5. 最后,运行以下命令使更改生效:source ~/.bashrc。 现在,您已成功在Ubuntu 20.04上安装了CMake。您可以使用cmake命令来执行各种构建任务。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [ubuntu20.04安装cmake详细教程](https://blog.csdn.net/l550802356/article/details/126602255)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值