我有一个应用程序应该运行在各种平台上,如ARM、i386、amd64等。我想检查任何可能的内存泄漏,我在GCC中启用了地址消毒器作为-fsanitize=address。我们正在使用buildroot编译整个OS+Application。为了确保每个开发人员都安装了相同版本的库,我们在ProjectX/lib路径中打包了所有所需的动态库,并将其设置为LD_LIBRARY_PATH。如果关闭地址消毒剂,一切正常。如何使用地址清除器进行编译并运行该应用程序
/lib/i386-linux-gnu/libm.so.6: version `GLIBC_2.23' not found (requ
我想在我的可执行文件Linux中对通向库的路径进行硬编码。在OS上,这是通过在构建库时在-o参数之后提供完整路径来实现的。例如,我在OS上构建了这样一个库:
cc foo.c --shared -o /home/sander/libfoo.so
当我构建一个名为“bar”的可执行文件,它与这个库链接,并且在可执行文件上使用otool -L时,我得到以下输出:
bar:
/home/sander/libfoo.so (compatibility version 0.0.0, current version 0.0.0)
我现在可以在任何地方运行这个可执行文件,而且它总是能够找到库。
我正