Julia: check if c library exists

Is there any way to check if the c library can be found by the system?

I tried using the catch try block on a library call to check if it exists, but actually kills the program.

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

Associated error:

 ERROR: error compiling anonymous: could not load module libfoo: libfoo: cannot open shared object file: No such file or directory 
+6
source share
1 answer

You can look before jumping using find_library :

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

where you will get an empty string if it is not found.

 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. 
+5
source

Source: https://habr.com/ru/post/973054/


All Articles