将共用图书馆连接起来,在<代码>main中留下一个未明确的提法。 确切错误是:
/usr/bin/ld: /tmp/cc3pGAwi.o: in function `main :
main.c:(.text+0x1e): undefined reference to `sum
collect2: error: ld returned 1 exit status
我的档案如下:
#!/usr/bin/sh
PROJECT_NAME="foo"
CFLAGS="-Wall -Wextra -pedantic"
gcc $CFLAGS -shared -fPIC -o libsubmodule.so submodule.c
gcc $CFLAGS -o $PROJECT_NAME -L. -Wl,-rpath=. -lsubmodule main.c
#include <stdio.h>
#include "submodule.h"
int main(void)
{
printf("%s", "Help Me!!!
");
printf("%i
",sum(2, 3));
return 0;
}
#ifndef SUBMODULE_H_
#define SUBMODULE_H_
int sum(int a, int b);
#endif // SUBMODULE_H_
#include <stdio.h>
#include "submodule.h"
int sum(int a, int b)
{
return a + b;
}
我期望这一方案能够汇编和印刷。
Help me!!!
5
页: 1
If I directly compile
我认为我的分部分。 由于<代码>nm libsubmodule,所以工作罚款。 因此,有线
00000000000010f9 T sum
我认为,我的守则应当发挥作用,因为我是#include
,其中使用-L.
和-Wl,-rpath=.
,以向联系人说明如何找到图书馆,我正在通过-lsubmodule
将其与我的可执行链接。
我确信,Im认为图书馆是正确的,因为它会带来不同的错误。 我也认为我觉得我是正确的。 我不理解图书馆如何能包含<代码>sum,可成功与可执行部分联系起来,然后没有发现其职能。 EDIT:我认为,该图书馆是联系人发现的,但可以与方案挂钩。