我的程序使用来自某个供应商的'libone.so'对象。它在系统中具有自定义位置。程序搜索该库的位置,然后使用dlopen打开它。当'libone.so'在底层执行某些操作并开始加载'libsecond.so'时,出现了一个问题。我通过strace看到,dlopen尝试按照ldconfig定义的标准路径查找'libsecond.so',而没有将'libone.so'的位置作为可能路径之一。
是否可以在'libone.so'内部配置dlopen调用,以使其从'libone.so'的位置加载'libsecond.so'?('libsecond.so'位于与'libone.so'相同的路径上)
附注:在程序启动之前,我无法影响系统配置(ldconf路径)。我需要在我的程序中解决这个问题。
附注二:如果我将'libone.so'的路径添加到/etc/ld.so.conf.d/custom.conf中,则问题得到解决。
libsecond.so
是自动加载的还是libeone.so
像你一样做了一些魔法呢? - Max LanghofLD_LIBRARY_PATH
环境变量可以解决这个问题。 - JL. Sanchez