首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用CMake链接到Capstone?

如何使用CMake链接到Capstone?
EN

Stack Overflow用户
提问于 2019-10-21 23:29:04
回答 1查看 1.3K关注 0票数 1

我试图在Capstone上的C++项目中使用C++反汇编框架。我运行了以下命令来安装开发包

代码语言:javascript
复制
sudo apt-get install libcapstone-dev

这在/usr/include/capstone中安装了include,但是当我尝试使用#include <capstone/capstone.h>包含编译我的应用程序时,我会得到链接器错误:

代码语言:javascript
复制
undefined reference to `cs_open'
undefined reference to `cs_disasm'
undefined reference to `cs_free'
undefined reference to `cs_close'

这些都是应该在libcapstone.so中实现的函数。

实际上,在libcapstone.so文件夹中没有/usr/lib

代码语言:javascript
复制
ubuntu@DESKTOP:/usr/lib$ ls
accountsservice    emacsen-common         libguestlib.so.0      networkd-dispatcher   software-properties
apt                environment.d          libguestlib.so.0.0.0  open-vm-tools         ssl
bfd-plugins        file                   libhgfs.so.0          openssh               sudo
binfmt-support     gcc                    libhgfs.so.0.0.0      os-release            sysctl.d
binfmt.d           git-core               libpsm1               pkg-config.multiarch  systemd
byobu              gnupg                  libvgauth.so.0        pkgconfig             sysusers.d
clang              gnupg2                 libvgauth.so.0.0.0    pm-utils              tar
cloud-init         gold-ld                libvmtools.so.0       policykit-1           tc
cnf-update-db      groff                  libvmtools.so.0.0.0   python2.7             tmpfiles.d
command-not-found  initcpio               llvm-6.0              python3               ubuntu-release-upgrader
compat-ld          initramfs-tools        locale                python3.6             update-notifier
dbus-1.0           kernel                 lxcfs                 python3.7             valgrind
debug              klibc                  lxd                   rsyslog               x86_64-linux-gnu
dpkg               language-selector      man-db                sasl2
dracut             libDeployPkg.so.0      mime                  sftp-server
eject              libDeployPkg.so.0.0.0  modules-load.d        snapd

由于找不到包,所以sudo apt-get install libcapstone2无法工作。

我是否需要安装其他软件包,或者可能有一些简单的CMake find_package() for Capstone?我发现的资源似乎没有使针对它/包括在项目中的Capstone设置足够简单。

编辑:

libcapstone-dev包安装的文件如下:

代码语言:javascript
复制
$ dpkg-query -L libcapstone-dev
/.
/usr
/usr/include
/usr/include/capstone
/usr/include/capstone/arm.h
/usr/include/capstone/arm64.h
/usr/include/capstone/capstone.h
/usr/include/capstone/mips.h
/usr/include/capstone/platform.h
/usr/include/capstone/ppc.h
/usr/include/capstone/sparc.h
/usr/include/capstone/systemz.h
/usr/include/capstone/x86.h
/usr/include/capstone/xcore.h
/usr/lib
/usr/lib/x86_64-linux-gnu
/usr/lib/x86_64-linux-gnu/libcapstone.a
/usr/lib/x86_64-linux-gnu/pkgconfig
/usr/lib/x86_64-linux-gnu/pkgconfig/capstone.pc
/usr/share
/usr/share/doc
/usr/share/doc/libcapstone-dev
/usr/share/doc/libcapstone-dev/CREDITS.TXT
/usr/share/doc/libcapstone-dev/HACK.TXT
/usr/share/doc/libcapstone-dev/README
/usr/share/doc/libcapstone-dev/TODO
/usr/share/doc/libcapstone-dev/copyright
/usr/lib/x86_64-linux-gnu/libcapstone.so
/usr/share/doc/libcapstone-dev/changelog.Debian.gz
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-10-22 03:35:25

Capstone似乎提供了pkg-config .pc文件。因此,以下几点应能发挥作用:

代码语言:javascript
复制
include(FindPkgConfig)

pkg_check_modules (CAPSTONE REQUIRED capstone)

# Use CAPSTONE_FOUND, CAPSTONE_LIBRARIES, CAPSTONE_INCLUDE_DIRS vars
target_link_libraries(${PROJECT_NAME} ${CAPSTONE_LIBRARIES})
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58495333

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档