Dependencies 使GNU Make定位正确的库依赖项

Dependencies 使GNU Make定位正确的库依赖项,dependencies,makefile,gnu,Dependencies,Makefile,Gnu,我有一个简单的Makefile,其中一个目标依赖于一个库: test49: test49.c -lpthread 二进制文件是使用隐式规则构建的,用于将.c文件转换为可执行文件 问题是,我试图交叉编译,但make将-lpthread解释为指向/usr/lib/libpthread.so,这是非常不正确的。我已经使用CC=/path/to/bin/gcc定义了交叉编译器的路径,因此我假设它可以计算出-lpthread应该在/path/to/lib中的某个地方,但它没有。您可以替换它 test49

我有一个简单的Makefile,其中一个目标依赖于一个库:

test49: test49.c -lpthread
二进制文件是使用隐式规则构建的,用于将.c文件转换为可执行文件

问题是,我试图交叉编译,但make将
-lpthread
解释为指向
/usr/lib/libpthread.so
,这是非常不正确的。我已经使用
CC=/path/to/bin/gcc
定义了交叉编译器的路径,因此我假设它可以计算出
-lpthread
应该在
/path/to/lib
中的某个地方,但它没有。

您可以替换它

test49: test49.c -lpthread


是的,这是我想出的解决办法,但是像那样硬编码似乎是错误的,并且会导致更多的问题。你必须告诉make它在哪里。告诉make gcc在哪里并不能告诉它关于
文件在计算机上的位置。@Michael您的libpthread在非标准位置吗?您也可以按照Dan的建议执行,并将
/path/to/lib
附加到
LD\u LIBRARY\u path
环境变量中。问题的一部分在于,当一个构建涉及多个编译器时。必须显式指定路径意味着我现在需要为每个工具链和可能依赖的每个库定义一个单独的变量。答案被接受,但现在我已经放弃了让make以最小的努力完成这一任务的想法。LD_LIBRARY_PATH环境变量中有什么?您希望make如何猜测
/PATH/to/lib
test49: test49.c /path/to/lib/lpthread.so