我正在尝试构建一个使用 CMake 构建系统的包(即 libebur128),它依赖于pkg-config在系统中查找所需的包。
构建所需的库后,我发现 CMake 能够找到其中之一,但找不到其他库,尽管它们是以相同的方式构建的。
我怎么知道出了什么问题?有什么方法可以输出它正在执行的测试或有关如何使用它pkg-config来定位包的信息吗?因为pkg-config每次找到所有必要的包时都需要手动使用。
以下是用于定位某些内容的 CMake 脚本之一,在本例中为 libmpg123:
find_package(PkgConfig)
pkg_check_modules(PC_MPG123 QUIET libmpg123)
find_path(MPG123_INCLUDE_DIR mpg123.h
HINTS ${PC_MPG123_INCLUDEDIR} ${PC_MPG123_INCLUDE_DIRS})
find_library(MPG123_LIBRARY NAMES mpg123 mpg123-0
HINTS ${PC_MPG123_LIBDIR} ${PC_MPG123_LIBRARY_DIRS})
set(MPG123_LIBRARIES ${MPG123_LIBRARY})
set(MPG123_INCLUDE_DIRS ${MPG123_INCLUDE_DIR})
include(FindPackageHandleStandardArgs)
find_package_handle_standard_args(MPG123 DEFAULT_MSG MPG123_LIBRARY MPG123_INCLUDE_DIR)
mark_as_advanced(MPG123_INCLUDE_DIR MPG123_LIBRARY)
Run Code Online (Sandbox Code Playgroud)
注意:我正在针对 Windows 进行交叉编译,以防万一,我正在使用 MinGW-w64 工具链,并且我已经调整了pkg-config路径以查看它应该在的位置。
我想在我的项目中包含这个文件:http://cairo.sourcearchive.com/documentation/1.9.4/backtrace-symbols_8c-source.html
但它需要与BFD链接.我有两个binutils并binutils-devel安装.我已经尝试过连接-lbfd以及直接连接/usr/lib64/libbfd.so和/usr/lib64/libbfd.a(两者都存在).我也试图寻找pkg-config,看看是否有我应该使用不同的标志,但目前还BFD或没有提及binutils在pkg-config.
无论我尝试过什么,我都会遇到以下错误:
undefined reference to 'bfd_init'
undefined reference to 'bfd_openr'
undefined reference to 'bfd_check_format'
undefined reference to 'bfd_checkformat_matches'
undefined reference to 'bfd_close'
undefined reference to 'bfd_map_over_sections'
Run Code Online (Sandbox Code Playgroud)
首先,我正在编译我的记录器和backtrace-symbols.c上面链接的文件(因为记录器是我打算用它来打印痕迹的地方).然后我将这两个目标文件一起链接到一个组合的目标文件中:
CC = clang
CFLAGS = -g -Wall -c
SOURCE = simplog.c
OBJ = simplog.o, simplog-temp.o, backtrace-symbols.o
all:
$(CC) $(CFLAGS) $(SOURCE); mv simplog.o simplog-temp.o; \
$(CC) -ansi $(CFLAGS) backtrace-symbols.c; \
ld -r …Run Code Online (Sandbox Code Playgroud) 我正在编写一个使用 OpenSSL 的程序。它工作正常,然后我重置/删除了 CMake 缓存。我现在收到以下错误消息。
我使用 Homebrew 安装了 OpenSSL。我将以下内容添加到我的 .bash_profile 中:
导出 PKG_CONFIG_PATH="/opt/homebrew/opt/openssl@1.1/lib/pkgconfig"
我将其添加到位于 /etc/paths 的全局路径文件中:
/opt/homebrew/opt/openssl@1.1/bin
用于调试此问题的其他修复/建议是什么?
错误:
/Applications/CLion.app/Contents/bin/cmake/mac/bin/cmake --build /Users/stephenjje/Documents/Je/test/cmake-build-debug --target test -- -j 6
[ 2%] Linking C executable test
ld: warning: ignoring file /usr/local/Cellar/openssl@1.1/1.1.1k/lib/libcrypto.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
ld: warning: ignoring file /usr/local/Cellar/openssl@1.1/1.1.1k/lib/libssl.dylib, building for macOS-arm64 but attempting to link with file built for macOS-x86_64
Undefined symbols for architecture arm64:
"_ERR_print_errors_fp", referenced from:
_http_tcpip_inbound_initialize in http_tcpip_inbound.c.o
_http_tcpip_inbound_tls_initialize in …Run Code Online (Sandbox Code Playgroud) GCC返回以下错误
/usr/include/gtk-2.0/gtk/gtk.h:32:21: fatal error: gdk/gdk.h: No such file or directory
Run Code Online (Sandbox Code Playgroud)
使用find /usr -name 'gdk.h'我能够找到丢失的标题
/usr/include/gtk-2.0/gdk/gdk.h
Run Code Online (Sandbox Code Playgroud)
我猜的错误引起的形成,编译器是不看的事实gtk-2.0的gdk目录,虽然我可能是错误有关.如果我是正确的,什么是pkgconfig对的选择gtk-2.0,如果我错了,但我真正做错了,是吗?