http://www.perlmonks.org?node_id=817890


in reply to Re^4: Problem make'ing Device::USB on osx Snow Leopard 10.6.2
in thread Problem make'ing Device::USB on osx Snow Leopard 10.6.2

so i started copying some of the libusb library files from my ubuntu install.
That is usually not a good idea. Library packages (such as libusb) really need to be installed via their own make procedures to be sure that all files are installed in their proper places so that they all know where to find each other and so that other library packages (such as Device::USB) can know where to find all of them.
I did also use macports, so I have now cleared out all installed libusb files to remove any related issues.
What did you use from MacPorts? The libusb port or the libusb-legacy port?
Device::USB seems to require the usb.h header from libusb legacy(0.1)
Fair enough.... so you need the "legacy" version on Snow Leopard.
I have not installed g++ or any other compilers on my macbook.
Apple's Developer Tools are installed by default on Snow Leopard; so you should have all the compilers you (usually) need for this kind of task. One way to see this is at the 11th line of your output where you see:
checking for gcc... gcc
Otherwise, it should have died at that point.

Update: I stand corrected about Developer Tools on Snow Leopard (thanks dHarry). Nevertheless, it looks like you have some version Developer Tools installed, as some version of gcc is being detected (perhaps from a previous version of Mac OS X?). Make sure you have the latest Developer Tools to ensure compatibility.

Trying to compile libusb 0.1 results in the make error that i put in my original post.(see top of thread).
The makefile does allow an environment var to be set with the location of the lib and include directories to use. I have tried setting this to /usr/local/ (libusb 1.0x) and /opt/local/ (macports) but still compile errors occur.
May I suggest that you use MacPorts to install the libusb-legacy port? If I understand you correctly, you are trying to build it by hand. If you let MacPorts do the heavy lifting, it will (or should) ensure that you have all necessary prerequisites installed and (most important) that the compilations are done with the proper flags to avoid all those warnings about incompatible pointers and such.

To summarize:

Good Luck!

Disclaimers: I'm not using MacPorts and I'm not running Snow Leopard. YMMV, but HTH.

Replies are listed 'Best First'.
Re^6: Problem make'ing Device::USB on osx Snow Leopard 10.6.2
by dHarry (Abbot) on Jan 18, 2010 at 11:08 UTC
    Apple's Developer Tools are installed by default on Snow Leopard

    Not true, I just got my Macbook (Mac OS X 10.6.2 Snow Leopard) and it didn't even have a C-compiler! I was trying to install some Perl modules and make was not present. I was recommended to install the xcode stuff (over 1 GB if I recall correctly) and voila gcc is alive again.

    Cheers

    Harry

      I have a fairly recent version of the Developer tools as my laptop is only a few months old and i installed xcode more recently.

      Secondly, I have now managed to install libusb-legacy using MacPorts and Make now works for Device::USB and it compiles! WOO! .. or so it seems..

      However, on execution of the dump_usb.pl script included with Device::USB it becomes apparent that it has not compiled correctly! gah, i cant win.

      The following is ./configure > make > sudo make install > ./dump_usb.pl

        Hmm strange, so far I installed everything with ease on my Mac. After a sudo bash and cpan install it installed all modules without any problem.... so far. For Device::USB I also encounter errors, I'll spend some more time on it.

        Cheers

        Harry

Re^6: Problem make'ing Device::USB on osx Snow Leopard 10.6.2
by Anonymous Monk on Nov 10, 2010 at 02:05 UTC

    Close, but no cigar. I managed to get Device::USB compiled and working out of CPAN with a few tweaks.

    MacPorts libusb-legacy is not what you need - while it does provide the right version of libusb for Device::USB, the dylibs it installs get named in such a way that gcc will only find them if invoked with -lusb-legacy (which it doesn't do). MakeMaker is one hell of a bag of black magic to me, so I've not done any work on figuring out how to change its linker arguments. Instead, the MacPorts packages you need are libusb and libusb-compat. These modules are named correctly, however they install to /opt/local/lib. If you don't want to snoop around in ~/.cpan and fix Device::USB's script yourself, I suggest symlinking /opt/local/lib/libusb.dylib and /opt/local/lib/libusb.a into /usr/local/lib.

    Once you've done your MacPorts dirtywork, you'll be able to install Device::USB out of CPAN. It requires both MakeMaker and Inline::C to be in place beforehand.