Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

brew install libusb linking failed

I am installing libusb with brew in my Mac

brew install libusb

The linking step failed as below

Error: The `brew link` step did not complete successfully The formula built, but is not symlinked into /usr/local 

Could not symlink lib/libusb-1.0.0.dylib 

Target /usr/local/lib/libusb-1.0.0.dylib already exists. 

You may want to remove it:   rm '/usr/local/lib/libusb-1.0.0.dylib'

To force the link and overwrite all conflicting files:   brew link
--overwrite libusb

So I removed the existing libusb with

sudo rm '/usr/local/lib/libusb-1.0.0.dylib'

and then did a link

brew link --overwrite libusb

The linking doesn't work, shows error below

Error: Could not symlink lib/libusb-1.0.0.dylib

/usr/local/lib is not writable.

If I try

sudo brew link --overwrite libusb

instead, that doesn't work either. What am I missing?

I am using OSX El Capitan version 10.11.4 (15E65)

like image 489
nad Avatar asked Sep 15 '26 00:09

nad


1 Answers

If things seem not to work with homebrew, my general strategy is first to try:

brew doctor

and do whatever the good doctor recommends.

If that fails, I tend to uninstall things, normally using --force which really does a good clean-up and removes old versions. So, in your case:

brew rm libusb --force

Then re-install the "unhappy" package. So, in your case:

brew install libusb

In answer to your new question in the comments. Your installation looks correct because libusb isn't an executable program - it is just a library without any associated command-line tools - so it won't show up when you run which libusb.

You can see the constituent parts of the package with this command:

brew ls libusb

/usr/local/Cellar/libusb/1.0.20/include/libusb-1.0/libusb.h
/usr/local/Cellar/libusb/1.0.20/lib/libusb-1.0.0.dylib
/usr/local/Cellar/libusb/1.0.20/lib/pkgconfig/libusb-1.0.pc
/usr/local/Cellar/libusb/1.0.20/lib/ (2 other files)

And, as you can see, there is no stand-alone executable program in /usr/local/bin called libusb, there are just

  • libusb.h - a C header file you would compile against
  • libusb...dylib - a dynamic library you would link against
  • libusb...pc - which supplies the info for the pkgconfig tool

So, if you wanted to compile and link an application against libusb, you would run pkg-config like this to find out the "Include path" and linker details

pkg-config --cflags --libs libusb

-I/usr/local/Cellar/libusb-compat/0.1.5/include      \ 
-I/usr/local/Cellar/libusb/1.0.20/include/libusb-1.0 \
-L/usr/local/Cellar/libusb

which means your compilation command would look like this:

gcc yourApp.c $(pkg-config --cflags --libs libusb) -o yourApp
like image 135
Mark Setchell Avatar answered Sep 20 '26 18:09

Mark Setchell



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!