讓我首先解釋上下文。我有一個包含函數聲明的頭文件,一個包含函數體的.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