嗨,我一直在尝试为类项目在solaris服务器上链接kstat库。为此,我将其放在将使用它的标题的开头
#ifdef HAVE_KSTAT
#include <kstat.h>
#endif
我的make文件看起来像
CC=gcc
#CC=gcc -Wall
mysh: sh.o Funcs.o mp3.o get_path.o part3.o main.c
$(CC) -g -pthread -lkstat main.c sh.o Funcs.o mp3.o get_path.o part3.o -o mysh
Funcs.o: Funcs.h Funcs.c
$(CC) -g -c Funcs.c
mp3.o: mp3.h mp3.c
$(CC) -g -c mp3.c
sh.o: sh.c sh.h
$(CC) -g -c -pthread -DHAVE_KSTAT sh.c
get_path.o: get_path.c get_path.h
$(CC) -g -c get_path.c
clean:
rm -rf sh.o get_path.o mysh Funcs.o part3.o
sh.o是包含part3.o的父文件,part3.o是使用kstat的文件。但是我得到了错误
/usr/bin/ld: cannot find -lkstat
collect2: error: ld returned 1 exit status
并且
part3.h:8:19: fatal error: kstat.h: No such file or directory
#include <kstat.h>
^
compilation terminated.
make: *** [sh.o] Error 1
我做错了什么,如何正确链接kstat库。我试着将part3.o做成自己的对象,以便在make文件中进行创建,并在其中链接kstat,但这给了我缺少分隔符的错误。
最佳答案
您必须找到该库的文件(例如kstat.a
或kstat.so
)及其标题。然后分别使用-I
和-L
将路径传递到 header 和lib。
例如:$CC -I /usr/include/kstat -L /usr/lib/kstat files -lkstat