我正在學習如何在Linux中編寫C代碼,並且正在學習初學者級別的makefile。 我在製作共享庫時遇到問題。我是否正確編寫這個makefile?
演習是做一個簡單的計算器功能的C程序與文件:
main.c
add.c
subt.c
mult.c
div.c
的文件的名稱來定義他們的功能。 在文件subt.c功能是靜態庫:
libsubstatic.a
在文件mult.c功能是在共享庫:
libmultshared.so
對於這個程序,我寫的以下生成文件:
calc.exe: main.o add.o div.o libsubstatic.a libmultshared.so
gcc -o calc.exe main.o add.o div.o libsubstatic.a -Wl,-rpath,/home/ahmed/Desktop/labTask3 -lmultshared.so
main.o: main.c header.h
gcc -c main.c
add.o: add.c header.h
gcc -c add.c
libsubstatic.a: subt.o
ar cr libsubstatic.a subt.o
subt.o: subt.c header.h
gcc -c subt.c
libmultshared.so: mult.o
gcc -shared -fPIC -o libmultshared.so mult.o
mult.o: mult.c header.h
gcc -c -fPIC mult.c
div.o: div.c header.h
gcc -c div.c
在碼和生成文件被放置在路徑:
/home/ahmed/Desktop/labTask3
我收到以下消息後,我在終端輸入「make」:
gcc -o calc.exe main.o add.o div.o libsubstatic.a -Wl, -rpath, /home/ahmed/Desktop/labTask3 -lmultshared.so
gcc: error: unrecognized command line option ‘-rpath,’
make: *** [calc.exe] Error 1
我缺少什麼?我是否正確編寫了這個makefile? 請解釋共享庫,我的概念可能是錯誤的。
請幫忙。
請注意,我是linux新手,並且沒有太多makefile的經驗。
編輯:我刪除了第一個答案指示的空間。現在終端說:
gcc -o calc.exe main.o add.o div.o libsubstatic.a -Wl,-rpath,/home/ahmed/Desktop/labTask3 -lmultshared.so
/usr/bin/ld: cannot find -lmultshared.so
collect2: error: ld returned 1 exit status
make: *** [calc.exe] Error 1
我應該對「-lmultshared.so」做些什麼嗎?我該怎麼辦?
請參閱[此示例](http://stackoverflow.com/a/20146082/841108)'Makefile'' –