Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何打开库的未知版本_C_Linux - Fatal编程技术网

C 如何打开库的未知版本

C 如何打开库的未知版本,c,linux,C,Linux,我正在尝试加载libreadline.so。如果我像在“libreadline.so.6”中那样显式地给出版本号,那么我的代码工作得很好,但是如果我只给出“libreadline.so”,那么代码就失败了,这可能只是试图直接打开我给出的文件名。为了避免将来出现新版本时出现故障,我在循环中调用dlopen,版本号倒计时为零。这是有效的,并且总是使用最新版本的libreadline 我的问题是,有没有正确或更好的方法 我看到libreadline.so.6是到libreadline.so.6.3的链

我正在尝试加载libreadline.so。如果我像在“libreadline.so.6”中那样显式地给出版本号,那么我的代码工作得很好,但是如果我只给出“libreadline.so”,那么代码就失败了,这可能只是试图直接打开我给出的文件名。为了避免将来出现新版本时出现故障,我在循环中调用dlopen,版本号倒计时为零。这是有效的,并且总是使用最新版本的libreadline

我的问题是,有没有正确或更好的方法


我看到libreadline.so.6是到libreadline.so.6.3的链接,很遗憾他们没有从libreadline.so到最新版本的链接。

打开包含所有不同文件的目录,然后比较所有文件的扩展名,怎么样?

将版本号放在配置文件中,然后您可以获取正确的版本。可能分两步执行链接,libreadline.so可能链接到libreadline.so.6,然后链接到配置文件中的实际库二进制文件。版本号:是的,当然可以,如果版本已更改,且配置文件未更改,则使用循环。当库更新时,人们不必到处编辑不相关应用程序的文件。我的直觉是,有一个“正确”的方法来做到这一点!!这就是问题所在,没有“libreadline.so”(dlopen可以找到),我不建议盲目地寻找最新的主要版本。如果主要版本的更改存在潜在的破坏性API更改,您应该重新评估对库的使用,更改代码以查找新的主要版本并重新测试。