标签: pkg-config

CMake 如何使用 pkg-config 来查找包?

我正在尝试构建一个使用 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路径以查看它应该在的位置。

linux pkg-config cmake cross-compiling

2
推荐指数
1
解决办法
1万
查看次数

无法链接到BFD

我想在我的项目中包含这个文件:http://cairo.sourcearchive.com/documentation/1.9.4/backtrace-symbols_8c-source.html

但它需要与BFD链接.我有两个binutilsbinutils-devel安装.我已经尝试过连接-lbfd以及直接连接/usr/lib64/libbfd.so/usr/lib64/libbfd.a(两者都存在).我也试图寻找pkg-config,看看是否有我应该使用不同的标志,但目前还BFD或没有提及binutilspkg-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)

c linker pkg-config dynamic-linking static-linking

1
推荐指数
1
解决办法
1503
查看次数

错误:Apple Silicon 上的 OpenSSL:libcrypto.dylib,为 macOS-arm64 构建,但尝试链接为 macOS-x86_64 构建的文件

我正在编写一个使用 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)

c homebrew openssl pkg-config clion

1
推荐指数
1
解决办法
7879
查看次数

gtk-2.0的pkgconfig选项

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.0gdk目录,虽然我可能是错误有关.如果我是正确的,什么是pkgconfig对的选择gtk-2.0,如果我错了,但我真正做错了,是吗?

pkg-config

0
推荐指数
1
解决办法
7388
查看次数