使用另一个文件中定义的函数(例如。[ch])放在项目目录中(并包含在#include“example.h”中)需要编辑项目Makefile吗?
我尝试在net-snmp项目的一部分中使用我的函数并遇到链接器错误。
错误是:
./.libs/libnetsnmpmibs.so: undefined reference to `snmpget'
nodeFunc.c如下所示:
#include <net-snmp/net-snmp-config.h>
#include <net-snmp/net-snmp-includes.h>
#include <net-snmp/agent/net-snmp-agent-includes.h>
#include <string.h>
#include "NodeFunc.h"
int snmpget(char* remoteip, short remoteport,char* community,int *len,char* str)
{
....using some net-snmp functions to get a certain object from a remote host....
}
我在我的主文件中使用了snmpget函数,如下所示:
...
snmpget(remIP,161,remComm,&lenth,ansstr);
...
答案 0 :(得分:0)
不是要添加一个需要修改makefile的函数,而是添加源文件本身。如果在makefile中源文件尚未作为编译目标引用,并且其目标文件不是链接依赖项,那么它将不会包含在构建中。
包含在构建中不是#include
指令的目的。仅仅包含源文件中的.h文件的内容,以便编译器具有声明的可见性;它不涉及包含定义的.c文件 - 必须单独编译和链接,在这种情况下是makefile的角色。