IP_FILE_HOOK项目bug汇总

1、先搜索target_link_libraries然后在 cjson 后面加上dl

IP_FILE_HOOK项目bug汇总_第1张图片
IP_FILE_HOOK项目bug汇总_第2张图片

2、记得在CMakeLists.txt文件中添加

set(CMAKE_CXX_STANDARD 11)

IP_FILE_HOOK项目bug汇总_第3张图片

3、Ninja下载

IP_FILE_HOOK项目bug汇总_第4张图片

你遇到的问题与CMake项目的配置有关。CMake 无法找到与 “Ninja” 对应的构建程序,同时还提示C和C++编译器未设置。通常可以通过以下步骤解决这些问题:

  1. 安装 Ninja
    如果你想使用 Ninja 作为构建工具,你需要确保它已安装在你的系统上。Ninja 是一种构建工具,通常比 Make 更快。你可以使用系统的软件包管理器来安装它。例如,在 Debian/Ubuntu 上,你可以运行以下命令:

    sudo apt-get install ninja-build
    

    在其他系统上,你可能需要使用不同的软件包管理器或手动下载 Ninja。

  2. 设置C和C++编译器
    CMake 需要知道要使用哪个C和C++编译器。你可以在运行CMake时通过设置 CMAKE_C_COMPILERCMAKE_CXX_COMPILER 变量来指定这些编译器。例如,如果你想使用GCC作为编译器,可以执行以下命令:

    cmake -DCMAKE_C_COMPILER=gcc -DCMAKE_CXX_COMPILER=g++ /你的源代码路径
    

    请将 “gcc” 和 “g++” 替换为你的系统上适当的编译器命令。

  3. 生成构建系统
    在设置编译器和任何其他必要选项后,你可以生成构建系统。确保指定要使用的生成器(在这种情况下是Ninja):

    cmake --build . -G Ninja
    

    将 “.” 替换为你的CMake项目目录的路径。这个命令将生成Ninja构建文件并启动构建过程。

如果你不想使用Ninja作为构建系统,你可以在命令中使用不同的生成器,常见的替代选项包括 “Make” 或不指定生成器(CMake将使用系统的默认生成器)。

一旦你解决了这些问题,CMake应该能够成功配置你的项目并生成构建系统。

4、dlsym的bug问题

在这里插入图片描述

你的错误消息表明在运行 cat test_white_list.txt 时出现了符号查找错误。这通常发生在共享库(libhook.so)中引用了一个未定义的符号。

在这种情况下,可能发生以下情况:

  1. 共享库问题libhook.so 可能依赖于其他共享库,而这些库没有正确链接或者版本不匹配。你可以使用以下命令查看 libhook.so 的依赖关系:

    ldd libhook.so
    

    确保所有依赖项都可以正确找到,并且版本匹配。

  2. 库加载顺序:在运行 cat 时,动态链接器加载共享库。可能 libhook.so 被加载,但它依赖的符号在加载时找不到。你可以尝试设置 LD_PRELOAD 环境变量来确保 libhook.so 在其他库之前加载:

    LD_PRELOAD=/path/to/libhook.so cat test_white_list.txt
    
  3. CMake 链接问题:检查你的 CMake 构建脚本是否正确配置了链接依赖项,特别是 dlsym 这个符号是否正确链接到 libdl 库。确保你的 CMakeLists.txt 文件中有类似以下的行:

    target_link_libraries(your_target_name dl)
    

    这将确保 libdl 库正确链接到你的项目中。

如果以上方法仍无法解决问题,你可能需要进一步检查共享库的依赖关系和构建过程,以确保所有库正确链接,并且符号都能够正确解析。

IP_FILE_HOOK项目bug汇总_第5张图片

根据你提供的 libcjson.so.1 的依赖信息,它似乎没有显式依赖于 libdl 库,因为 libdl 没有在依赖列表中。

问题可能出在 libhook.so 中,它依赖于 cjson 并可能间接依赖于 libdl,但却未正确链接到 libdl

你可以尝试在 libhook.so 的构建过程中显式链接到 libdl,以确保 dlsym 等符号能够正确解析。在你的 CMakeLists.txt 文件中添加以下行:

target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE cjson dl)

这将确保在构建 libhook.so 时,它会正确链接到 libdl

raries(${CMAKE_PROJECT_NAME} PRIVATE cjson dl)


这将确保在构建 `libhook.so` 时,它会正确链接到 `libdl`。

重新构建 `libhook.so` 后,再次运行你的测试命令 `cat test_white_list.txt`,看看是否问题得到解决。如果问题仍然存在,请确保 `libhook.so` 的链接设置和运行时环境都正确。

你可能感兴趣的:(项目,Linux,Hook技术,c++,笔记,bug)