Debian

為什麼我執行腳本時無法辨識 makefile 中的 pkg-config 命令?

  • August 1, 2021

我正在嘗試在我的 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來查找包含特定文件的包。

對於readlinezlib,您需要libreadline-devzlib1g-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命令以檢查它們是否正常工作,並獲取有關每個單獨錯誤的資訊。

引用自:https://unix.stackexchange.com/questions/662807