gpt4 book ai didi

c++ - 如何使用 CMake 链接到 Capstone?

转载 作者:行者123 更新时间:2023-11-28 04:07:19 27 4
gpt4 key购买 nike

我正在尝试使用 Capstone C++ 中的反汇编框架项目 Ubuntu . I ran the following command to install the development package :

sudo apt-get install libcapstone-dev

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

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文件夹:

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()对于 Capstone ?我找到的资源似乎没有生成 Capstone用于链接它/将其包含在一个足够简单的项目中的设置。

编辑:
libcapstone-dev安装的文件包是:

$ 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

最佳答案

Capstone 似乎提供了pkg-config .pc 文件。因此,以下应该有效:

include(FindPkgConfig)

pkg_check_modules (CAPSTONE REQUIRED capstone)

# Use CAPSTONE_FOUND, CAPSTONE_LIBRARIES, CAPSTONE_INCLUDE_DIRS vars
target_link_libraries(${PROJECT_NAME} ${CAPSTONE_LIBRARIES})

关于c++ - 如何使用 CMake 链接到 Capstone?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58495333/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com