确保链接到非系统安装的库
Make sure to link against non-system installed library
我在自定义文件夹中下载并编译了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?
重命名您的库文件(例如, 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
相关文章:
- 无法链接文件系统库C++
- 将"libpqxx"与Visual Studio 2013链接/安装,以便与PostgrSQL建立C++连接
- 如何防止 CMake 在构建时(而不是在安装时)为共享库创建符号链接?
- 程序使用boost::文件系统链接clang,但不使用gcc
- Assimp模型加载库安装/链接故障
- 安装Glog链接错误
- 使用 BOOST property_tree / iostreams / 文件系统 / foreach - 结果出现链接
- 如何使用 cmake 来确保 C++14 编译器与实验文件系统 TS 库的链接?
- 静态链接如何处理系统文件?
- 程序在链接提升文件系统时无法启动
- C++ / GoogleTest - 如何在链接目录中为每个测试运行安装程序
- C++构建系统 - 远程编译和链接选项
- 如何在Bazel中静态链接系统库
- 在 Code::Blocks 中使用自定义安装目录在 Windows 上链接 SDL-bgi
- 协和式飞机安装:需要链接一个lp求解器才能使用此功能
- 为什么更改链接顺序可以修复一个系统上的一些链接错误?
- ROS在linux下使用C++的boost::文件系统库链接错误
- 非系统g++链接系统库,忽略rpath
- PCL安装链接直接到boost安装目录
- fstream保存文件和文件系统交叉链接的文件