/usr/bin/ld:在 Redhat 上找不到 /usr/lib64/libasan.so.0.0.0

/usr/bin/ld: cannot find /usr/lib64/libasan.so.0.0.0 on redhat

本文关键字:usr lib64 so 找不到 libasan Redhat bin ld      更新时间:2023-10-16

我通常在我的c/c ++程序中使用valgrind,但人们一直在推荐地址清理器,所以我想测试一下,但是我在Redhat系统上链接到它时遇到了问题。

我得到了以下代码:

$ 猫堆释放后使用.cpp

int main(int argc, char **argv) {
  int *array = new int[100];
  delete [] array;
  return array[argc];  // BOOM
}

编译如下:

$ g++ -O -g -fsanitize=address heap-use-after-free.cpp

/usr/bin/ld: cannot find /usr/lib64/libasan.so.0.0.0
collect2: error: ld returned 1 exit status

在我安装了 libasan 的红帽子上

sudo yum install libasan
[sudo] password for dingdongsong: 
Loaded plugins: langpacks, product-id, rhnplugin, search-disabled-repos, subscription-manager
This system is receiving updates from RHN Classic or Red Hat Satellite.
rh-network-tools-rhel-x86_64-server-7-prod                                                                                                                                                                                                           | 1.5 kB  00:00:00     
rhel-x86_64-server-7-custom-prod                                                                                                                                                                                                                     | 1.0 kB  00:00:00     
rhel-x86_64-server-7-epel-prod                                                                                                                                                                                                                       | 1.5 kB  00:00:00     
rhel-x86_64-server-7-prod                                                                                                                                                                                                                            | 1.5 kB  00:00:00     
rhel-x86_64-server-7-rhscl-1-prod                                                                                                                                                                                                                    | 1.5 kB  00:00:00     
rhel-x86_64-server-7-thirdparty-oracle-java-prod                                                                                                                                                                                                     | 1.5 kB  00:00:00     
rhel-x86_64-server-extras-7-prod                                                                                                                                                                                                                     | 1.5 kB  00:00:00     
rhel-x86_64-server-optional-7-prod                                                                                                                                                                                                                   | 1.5 kB  00:00:00     
rhel-x86_64-server-supplementary-7-prod                                                                                                                                                                                                              | 1.5 kB  00:00:00     
Package libasan-4.9.2-6.2.el7.x86_64 already installed and latest version
Nothing to do

具有以下 libasan 共享对象:

$ 定位利巴桑

/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/32/libasan.a
/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/32/libasan.so
/opt/rh/devtoolset-7/root/usr/lib/gcc/x86_64-redhat-linux/7/32/libasan_preinit.o
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/libasan.so
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/libasan_preinit.o
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/32/libasan.a
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/32/libasan.so
/usr/lib/gcc/x86_64-redhat-linux/4.8.2/32/libasan_preinit.o
/usr/lib64/libasan.so.1
/usr/lib64/libasan.so.1.0.0

有人可以指出我正确的方向吗?

谢谢

请安装其他库,

yum install libasan libubsan

参考: https://bugzilla.redhat.com/show_bug.cgi?id=1303766

看起来它正在寻找比您拥有的更早版本的库。尝试这样做,看看它说了什么:

sudo yum install /usr/lib64/libasan.so.0.0.0

此外,您确定您的 gcc-c++ 包版本是最新的吗?

我在 CentOS 7 容器中工作的 libasan 软件包的版本是这样的: libasan-4.8.5-36.el7_6.2.x86_64 .

我最近在装有 gcc 4.8.5 的 CentOS 7 系统上遇到了同样的问题。我在 https://rpmfind.net/linux/RPM/centos/7.7.1908/x86_64/Packages/libasan-4.8.5-39.el7.x86_64.html 找到了一个转速,并且能够启动并运行它。