让我首先解释上下文。我有一个包含函数声明的头文件,一个包含函数体的.c程序和主程序。静态库无法找到
foo.h中
#ifndef _FOO_H_
#define _FOO_H_
void foo();
#endif
的foo.c
#include<stdio.h>
#include "include/foo.h"
void foo()
{
printf("Hello\n");
}
mainer.c
#include <stdio.h>
#include "include/foo.h"
int main()
{ foo();
return 0;
}
对于这个程序的目的,既标题和静态库需要位于不同的文件夹中,因此标题位于/include/foo.h
,生成的静态库将位于/lib/libfoo.a
和主目录中的两个.c程序中。其思想是生成目标程序,然后生成静态库,然后链接静态库以创建可执行文件,最后执行程序。
我在创建对象程序和静态库时都没有问题。
$ gcc -c foo.c -o foo.o
$ ar rcs lib/libfoo.a foo.o
但是,当我尝试链接的静态库...
$ gcc -static mainer.c -L. -lfoo -o mainfoo
这gaves给我一个错误,声称静态库无法找到
/usr/bin/ld: cannot find -lfoo
collect2: ld returned 1 exit status
它奇怪,考虑I asked before how to work with static libraries and headers on separate folders and in this case the static libraries were found。任何想法我做错了什么?
它在'lib'不''' – 2013-04-09 22:46:28