Debian
為什麼我執行腳本時無法辨識 makefile 中的 pkg-config 命令?
我正在嘗試在我的 Debian 虛擬機上為開源項目執行 make,但我不明白為什麼
pkg-config
無法辨識基於的命令。其中一個命令如下:
tempgui-qrps.so: tempgui-qrps.cc refpersys.hh tempgui-qrps.hh tempgui-qrps.moc.hh | $(RPS_CORE_OBJECTS) $(RPS_BUILD_CXX) $(RPS_BUILD_COMPILER_FLAGS) \ -shared -o $@ -fPIC -Wall -Wextra -O -g \ $(shell pkg-config --cflags Qt5Core Qt5Gui Qt5Widgets $(RPS_PKG_NAMES)) \ $(shell pkg-config --libs Qt5Core Qt5Gui Qt5Widgets $(RPS_PKG_NAMES)) \ -std=gnu++17 \ $<
當我在命令行上執行 make 時,與上述命令對應的輸出如下所示:
g++ -std=gnu++17 \ -shared -o tempgui-qrps.so -fPIC -Wall -Wextra -O -g \ \ \ -std=gnu++17 \ tempgui-qrps.cc
當我執行 make 命令時,我還會看到以下警告:
Package readline was not found in the pkg-config search path. Perhaps you should add the directory containing `readline.pc' to the PKG_CONFIG_PATH environment variable No package 'readline' found Package zlib was not found in the pkg-config search path. Perhaps you should add the directory containing `zlib.pc' to the PKG_CONFIG_PATH environment variable No package 'zlib' found
這些問題(沒有包和
pkg-config
未處理的命令)是否相關?在我的系統上安裝的一些詳細資訊
pkg-config
如下:xxxxx@xxxx:~$ pkg-config --version 0.29 xxxx@xxxx:~$ whereis pkg-config pkg-config: /usr/bin/pkg-config /usr/lib/pkg-config.multiarch /usr/share/man/man1/pkg-config.1.gz
擁有
pkg-config
是不夠的:您還需要與每個命令.pc
中命名的包相對應的文件。pkg-config
對於
pkg-config --cflags Qt5Core Qt5Gui Qt5Widgets $(RPS_PKG_NAMES)
,您需要安裝qtbase5-dev
,以及$(RPS_PKG_NAMES)
. 您可以安裝和使用apt-file
來查找包含特定文件的包。對於
readline
和zlib
,您需要libreadline-dev
和zlib1g-dev
。此外,readline.pc
如果您使用的是 Debian 10,則需要創建;將其放入 中/usr/local/lib/pkgconfig
,內容如下:prefix=/usr exec_prefix=${prefix} libdir=/usr/lib/x86_64-linux-gnu includedir=${prefix}/include Name: Readline Description: Gnu Readline library for command line editing URL: http://tiswww.cwru.edu/php/chet/readline/rltop.html Version: 7.0 Requires.private: tinfo
(對於
amd64
)。您可以從 shell 執行各種
pkg-config
命令以檢查它們是否正常工作,並獲取有關每個單獨錯誤的資訊。