简体   繁体   中英

How to "override pkg-config" by setting MYLIB_LIBS and MYLIB_CFLAGS?

I'm trying to build some program which uses GNU autotools on a Unix-like OS. It needs some library which my OS distribution doesn't have, say mylib , so I download, build and install that library under /opt/mylib .

Now, I want to tell the configure script to use mylib under /opt/mylib , but it doesn't have a command-line option such as --mylib-location= . However, configure --help tells me:

Some influential environment variables:
... snip ...
  MYLIB_CFLAGS C compiler flags for mylib, overriding pkg-config
  MYLIB_LIBS   linker flags for mylib, overriding pkg-config
... snip ...

I'm guessing these are shell variables I need to set. But - what exactly do I need to set them to?

These variables are expanded in the command-line for compilation and for linking respectively. So, typically, the _CFLAGS would need to indicate an include file search path and _LIBS would need to tell the linker to use the library, plus indicate a search path for it.

In your specific case, and assuming typical layout of /opt/mylibs , you need to set:

MYLIB_CFLAGS=-I/opt/mylib/include
MYLIB_LIBS="-L/opt/mylib/lib -lmylib"

and that should do it. The text about "overriding pkg-config" is due to how pkg-config is used as the default for obtaining these flags. Example (for the PNG library and on my system):

# pkg-config --cflags libpng
-I/usr/include/libpng16
# pkg-config --libs libpng
-lpng16 -lz

pkg-config has search paths configured for include and library directories, plus a repository of .pc files etc., with which it determines the system location of various libraries/packages.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM