如何将hiredis安装到/usr/local/lib
时间: 2023-10-10 13:12:39 浏览: 86
可以按照以下步骤将 hiredis 安装到 /usr/local/lib 目录下:
1. 下载 hiredis 源码包并解压:
```bash
wget https://github.com/redis/hiredis/archive/v1.0.1.tar.gz
tar zxvf v1.0.1.tar.gz
cd hiredis-1.0.1
```
2. 编译和安装:
```bash
make
sudo make install PREFIX=/usr/local LIBRARY_PATH=/usr/local/lib
```
其中,PREFIX 指定了安装路径前缀,LIBRARY_PATH 指定了库文件的安装路径。
3. 确认安装是否成功:
```bash
ls /usr/local/lib/libhiredis.so
```
如果输出 /usr/local/lib/libhiredis.so,则表明安装成功。
相关问题
怎么让我的头文件安装到独立的目录,类似 /usr/local/hiredis
要让头文件安装到独立的目录,可以使用CMake的INSTALL_INTERFACE关键字。这个关键字可以指定在安装时应该将文件安装到哪里。这里提供一个示例CMakeLists.txt文件,说明如何将头文件安装到独立的目录:
```
cmake_minimum_required(VERSION 3.10)
project(myproject)
# 添加头文件目录
include_directories(include)
# 添加可执行文件
add_executable(myexe main.cpp)
# 安装可执行文件
install(TARGETS myexe RUNTIME DESTINATION bin)
# 安装头文件
install(DIRECTORY include/ DESTINATION include/myproject
FILES_MATCHING PATTERN "*.h"
PATTERN "private" EXCLUDE
)
# 安装配置文件
install(FILES myproject-config.cmake DESTINATION lib/cmake/myproject)
# 设置安装路径
set(CMAKE_INSTALL_PREFIX /usr/local/myproject)
# 指定安装目录
set(INSTALL_INCLUDE_DIR "${CMAKE_INSTALL_PREFIX}/include")
set(INSTALL_CMAKE_DIR "${CMAKE_INSTALL_PREFIX}/lib/cmake/myproject")
# 设置头文件的安装路径
set_target_properties(myexe PROPERTIES
PUBLIC_HEADER "include/myheader.h"
)
# 安装编译器生成的导入/导出文件
install(EXPORT myproject-targets
FILE myproject-targets.cmake
DESTINATION ${INSTALL_CMAKE_DIR}
)
```
在这个示例中,我们使用了以下命令将头文件安装到独立的目录:
```
install(DIRECTORY include/ DESTINATION include/myproject
FILES_MATCHING PATTERN "*.h"
PATTERN "private" EXCLUDE
)
```
这个指令将include目录下的所有.h文件都安装到/usr/local/myproject/include目录下。
还需要在set_target_properties指令中设置PUBLIC_HEADER属性,将要安装的头文件指定为myheader.h:
```
set_target_properties(myexe PROPERTIES
PUBLIC_HEADER "include/myheader.h"
)
```
这样,在执行make install命令时,CMake就会将myheader.h安装到/usr/local/myproject/include目录下。
需要注意的是,如果要使用这个示例,需要将myheader.h文件放在include目录下。同时,CMakeLists.txt文件中的路径需要根据具体的项目进行修改。
我现有的目录下有src、include、client、server四个文件夹,依赖/usr/local/lib/libhiredis.so,我希望用src、include生成一个动态库,用server加这个动态库生成一个程序并封装成service,应该怎么写cmakelist.txt,
你可以按照以下方式编写CMakeLists.txt文件:
```
cmake_minimum_required(VERSION 3.5)
project(MyProject)
set(CMAKE_CXX_STANDARD 11)
# 设置头文件路径
include_directories(include)
# 设置源文件路径
file(GLOB SOURCES "src/*.cpp")
# 生成动态库
add_library(MyLibrary SHARED ${SOURCES})
# 链接libhiredis.so库
target_link_libraries(MyLibrary hiredis)
# 生成可执行文件
add_executable(MyServer server/main.cpp)
# 链接MyLibrary库
target_link_libraries(MyServer MyLibrary)
# 将可执行文件封装成service
install(TARGETS MyServer DESTINATION /etc/systemd/system)
```
这个CMakeLists.txt文件假设你的源代码文件都在src文件夹中,头文件在include文件夹中,server的主程序在server/main.cpp中。你需要将libhiredis.so库放在/usr/local/lib/目录下。
你可以使用以下命令来编译和安装程序:
```
mkdir build && cd build
cmake ..
make
sudo make install
```
这将会生成MyLibrary动态库和MyServer可执行文件,并将MyServer封装成service并安装到/etc/systemd/system目录下。
阅读全文