C++ C++;Linux如何使用libtar

C++ C++;Linux如何使用libtar,c++,linux,linker,tar,C++,Linux,Linker,Tar,我已经下载并安装了libtar。 我已正确添加头文件(#include)。 我使用KDevelop,当我开始键入函数时,它会自动识别函数tar\u append\u tree和tar\u open。 我将cmake与KDevelop一起使用(作为创建新项目时的一个选项),到目前为止,所有需要链接的东西(pthreads、共享内存和数学)我所要做的就是在cmake_EXE_LINKER_FLAGS中添加适当的标志。我知道libtar需要-ltar才能工作,但我仍然得到:对tar\u open的未定

我已经下载并安装了libtar。 我已正确添加头文件(
#include
)。 我使用KDevelop,当我开始键入函数时,它会自动识别函数tar\u append\u treetar\u open。 我将cmake与KDevelop一起使用(作为创建新项目时的一个选项),到目前为止,所有需要链接的东西(pthreads、共享内存和数学)我所要做的就是在cmake_EXE_LINKER_FLAGS中添加适当的标志。我知道libtar需要-ltar才能工作,但我仍然得到:对tar\u open的未定义引用,对tar\u append\u tree的未定义引用。 有人能帮忙吗?我不知道还有其他tar库,在压缩之前,我真的需要在一个tarball中组织数千个xml文件

编辑:我现在发现了libarchive,它应该比libtar好得多。然而,我在这里遗漏了一些东西。我如何明确地告诉KDevelop/Cmake如何链接这些库?libarchive没有链接标志(至少我在google上找不到),而且当我尝试编译时,会得到对导入函数的未定义引用


谢谢大家!

我肯定有不止一种解决方案,但这是我的。我创建了两个文件

  • FindLIBTAR.cmake
    在我的项目文件夹中的
    cmake/Modules/
  • /usr/lib/pkgconfig中的
    libtar.pc
FindLIBTAR.cmake libtar.pc
FindLIBTAR.cmake
使用pkgconfig查找
libtar
库,
libtar.pc
pkgconfig查找库。如果不想将cmake文件放在项目目录中,可以将其放在cmake放置所有查找文件的同一位置(
/usr/share/cmake/Modules/
)。如果您确实将其保存在项目文件夹中,则需要通过以下方式将其添加到
CMAKE\u模块路径中:

SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules/")

@沃伦·雷帕?有联系吗@Duck libtar.h位于:/usr/local/include/libtar.h和/usr/lib/libtar.so.0和/usr/local/libtar.aDo您的库搜索路径中有/usr/local/libtar吗?(-L/usr/local/lib)?如果你指的是LD_LIBRARY_PATH,那么不是。但是/etc/LD.so.conf.d/libc.conf有它,所以我假设LD应该找到它,不是吗?@Alex:运行'ldconfig'会改变什么吗?
###########################################################################
# libtar installation details
###########################################################################

prefix=/usr
exec_prefix=${prefix}
libdir=${exec_prefix}/lib
includedir=${prefix}/include

Name: libtar
URL: http://www.feep.net/libtar/
Description: Library for Tar files
Version: 1.2.11-8
Libs: -L${libdir} -ltar -Wl,-Bsymbolic-functions -Wl,-z,relro 
Libs.private: 
Cflags: -I${includedir}
SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH "${CMAKE_SOURCE_DIR}/cmake/Modules/")