朱莉娅:检查c库是否存在

时间:2014-07-29 17:23:33

标签: julia

有没有办法检查系统是否可以找到c库?

我试图在库调用上使用try catch块来测试它是否存在,但这实际上会杀死程序。

try
    ccall( (:func, "libfoo"), Bool, () )
catch
    println("This line is never called. Ever")
end

相关错误是:

ERROR: error compiling anonymous: could not load module libfoo: libfoo: cannot open shared object file: No such file or directory

1 个答案:

答案 0 :(得分:5)

在使用find_library

跳跃之前,你可以看一下
julia> find_library(["libc"])
"libc"

julia> find_library(["libfoo"])
""

如果找不到,你将获得空字符串。

julia> help(find_library)
INFO: Loading help data...
Base.find_library(names, locations)

   Searches for the first library in "names" in the paths in the
   "locations" list, "DL_LOAD_PATH", or system library paths (in
   that order) which can successfully be dlopen'd. On success, the
   return value will be one of the names (potentially prefixed by one
   of the paths in locations). This string can be assigned to a
   "global const" and used as the library name in future
   "ccall"'s. On failure, it returns the empty string.