我在自定义文件夹中下载并编译了libevent,但我注意到还有一个系统范围的libevent安装。但我想链接到我编译的那个。
我的程序如下:
#include <iostream>
#include <string.h>
#include <errno.h>
#include <stdio.h>
#include <signal.h>
#include <event2/bufferevent.h>
#include <event2/buffer.h>
#include <event2/listener.h>
#include <event2/util.h>
#include <event2/event.h>
#include <event2/frob.h>
int main()
{
struct event_base *base;
struct evconnlistener *listener;
struct event *signal_event;
base = event_base_new();
std::cout << "Finished getting new event base" << std::endl;
return 0;
}
然后,在下载的libevent版本中,我做了一些修改,比如将exit(-1)
插入event_base_new()
函数,编译它们,我的程序和libevent再次运行可执行文件。但是,程序没有退出就完成了。
以下是我的编译方式:
clang++ -I/Users/max/Downloads/libevent-2.0.22-stable/include -Wall -g -c server.cpp
clang++ -Wall -g server.o -L/Users/max/Downloads/libevent-2.0.22-stable/ -levent -o server
是不是足以告诉链接器使用我的其他版本的libevent?
答案 0 :(得分:0)
重命名您的库文件(例如,更改为libevent_customized.a
)并向链接器提供重命名的库名称:
clang++ -Wall -g server.o -L/path/to/lib -levent_customized -o server
# ^^^^^^^^^^^^^^^^^^
或者,您可以使用其完整路径作为常规参数指定库文件(这仅适用于静态库):
clang++ -Wall -g server.o /path/to/lib/libevent.a -o server