有没有办法检查系统是否可以找到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
答案 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.