我想學習如何在Linux環境中創建一個C/C++庫,但我在網上有一個問題(可能是微不足道的一個)教程沒有幫助解決。用C創建庫/ C++ - LD找不到我的圖書館
對於確定性讓我們說我有下面的代碼文件的foo.c:
//file: foo.c
#include <stdio.h>
void hello(void)
{
printf("hello!\n");
}
一個foo.h中:
//file: foo.h
void hello(void);
,並從使用功能招呼程序() foo.c,命名爲prog.c:
//file: prog.c
#include "foo.h"
int main(void)
{
hello();
return 0;
}
這三個文件都在同一個目錄下。然後我編譯foo.c:
gcc -fPIC -c foo.c
並且得到了一個foo.o文件。然後我用LD創建庫文件:
ld -G foo.o -o libfoo.so
但是,當我嘗試編譯prog.c中有:
gcc -o prog prog.c -lfoo
我得到一個錯誤信息:
/usr/bin/ld: cannot find -lfoo
collect2: ld returned 1 exit status
我我相信這是一種微不足道的問題,但我找不到解決方案。所以我的問題是,如果這個過程是錯誤的,或者如果我必須把libfoo.so文件放在一個特殊的路徑中。
的另一個問題是如何改變,如果我用G ++而不是GCC。
謝謝。
編輯:
我知道我可以編譯既prog.c中的foo.c和對prog.o和foo.o的一個鏈接,然後他們作出的可執行文件。但在我最初的問題中,我想以一種可以分發給將在自己的程序中使用我的函數的人的方式編譯foo.c。
Hummmm ...權。 是否有在LD查找自動庫系統中的任意路徑? – 2009-05-29 19:15:56