【问题标题】:Why can't gcc find my static library?为什么 gcc 找不到我的静态库?
【发布时间】:2012-08-24 14:28:26
【问题描述】:

我正在尝试将 cspec 库链接到我的 C 项目中。这是位于测试文件夹中的我的 Makefile:

all: test

test: sample.o
    gcc -Wall -o test sample.o -L ../lib/cspec -llibcspec.a

sample.o: sample.c
    gcc -Wall -c sample.c -I../lib/cspec

clean:
    rm -rf *o test

我的目录是:

/
/src
/lib
/lib/cspec
/tests

当我运行 make 时,我收到以下错误:

gcc -Wall -o test sample.o -L ../lib/cspec -llibcspec.a
/usr/bin/ld: cannot find -llibcspec.a

我已确保 libcs​​pec.a 文件位于 lib/cspec 文件夹中,但我也尝试将其放在测试文件夹中并删除 -L 命令,但无济于事。

【问题讨论】:

  • 尝试删除-L之后的空格。
  • @Joshua K: 否 - -L 之后的空格是可选的,没有区别。 -I 同上。

标签: c gcc


【解决方案1】:

变化:

gcc -Wall -o test sample.o -L ../lib/cspec -llibcspec.a

到:

gcc -Wall -o test sample.o -L ../lib/cspec -lcspec

(按照惯例,gcc 和其他 *nix 编译器会自动添加 lib 前缀和适当的后缀。)

【讨论】:

  • 请注意,如果您碰巧在与libcspec.a 相同的目录中有libcspec.so,您的命令将导致与.so 库的链接。如果您真的想使用.a 库,请使用-l:cspec.a。 (见stackoverflow.com/questions/6578484/…
猜你喜欢
  • 2017-08-05
  • 2019-09-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-10
相关资源
最近更新 更多