gpt4 book ai didi

c - undefined reference 和链接库

转载 作者:太空宇宙 更新时间:2023-11-04 06:26:20 25 4
gpt4 key购买 nike

我的动态库遇到了一些编译问题。它应该链接到 main.c,但对于所有对它的引用,我收到“对函数名称的 undefined reference ”。

main.c 的内容并不是那么重要;我包括我的图书馆:

#include "matrix.h"

然后我有一个简单的 Makefile 来链接两者。

#Variables
LIB = matrix

# Usual compilation flags
CFLAGS = -std=c99 -Wall -Wextra -g
CPPFLAGS = -I../include -DDEBUG
LDFLAGS = -lm

# Special rules and targets
.PHONY: all clean help

all: $(LIB).o libmatrix.so main

$(LIB).o: $(LIB).c $(LIB).h
$(CC) $(CFLAGS) $(CPPFLAGS) -fPIC -c -o $@ $<

libmatrix.so: $(LIB).o
$(CC) $(CFLAGS) -fPIC -shared -o $@ $< $(LDFLAGS)

main: main.o libmatrix.so
$(CC) $(CFLAGS) -o $@ $< -L -lmatrix

任何人都可以告诉我我可能会出错的地方吗?非常感谢。

最佳答案

您可能希望在最后一行使用 -L. 而不是 -L,因此:

main: main.o libmatrix.so
$(CC) $(CFLAGS) -o $@ $< -L. -lmatrix

你应该阅读 Program Library HOWTODrepper's paper: How to Write Shared Libraries ;您可能希望在链接时设置一些 -rpath(可能使用 -Wl,-rpath,. ...),并且您可能希望使用 进行链接-rdynamic ....

或者,将您的 LD_LIBRARY_PATH 环境变量设置为包含 .(我不推荐这样做),或者将您的共享库安装在 /usr/local/lib/(并将其添加到 /etc/ld.so.conf,然后运行 ​​ldconfig)。另见 dlopen(3) , environ(7) , ld.so(8) , ldconfig(8)

关于c - undefined reference 和链接库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26419618/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com