Peter,

Thank you for your assistance!

I followed your recommendation and went ahead and upgraded libusb to the latest 
version. I am now able to compile and link against libusb. Yay!

I do have a few follow up questions ...

I created a libusb-1.0.9.tar.bz2.md5 file since I didn't see one on the 
download page. This got rid of the LTIB warning.
I created a libusb.spec.patch file containing the contents of the libusb.spec 
patch text you provided in the dist/lfs-5.1/libusb directory. I saved a copy of 
the existing libusb.spec file as libusb.spec.0.1.8 and then applied the patch. 
I was wondering if all of that was necessary? I could have just edited the 
libusb.spec directly, or just applied the patch and discarded the 
libusb.spec.patch file. Is there a 'proper' way to do this kind of thing? I'd 
rather do things right the first time.

Here is the (copied from helloworld) contents of the usbtest Makefile:

CXXFLAGS = -I../rootfs/usr/include -Wall
LDFLAGS  = -L../rootfs/usr/lib -lusb-1.0
progs    =  usbtest
prefix   =  /usr/local
DESTDIR  =

ifdef SYSROOT
CXXFLAGS += -I$(SYSROOT)/$(prefix)/include
LDFLAGS  += -L$(SYSROOT)/$(prefix)/lib
endif

all : $(progs)

install : $(DESTDIR)/$(prefix)/bin
     cp -a $(progs) $(DESTDIR)/$(prefix)/bin/

distclean clean :
     rm -f $(progs)

$(DESTDIR)/$(prefix)/bin:
     mkdir -p $@

I was wondering if this was the proper way to set things up in the Makefile? It 
seems 'odd' to be including/linking with files in rootfs/usr/xxx. It seems like 
the libusb files should be where the rest of the headers and libs are. That 
said, the ifdef SYSROOT block looks like it would accomplish the same result 
with a change to prefix from /usr/local to just /usr. Is that what I should be 
using in this case? Again, just looking to do things right the first time.

Many, many thanks for the help.

Regards,

Dale

From: Peter Barada [mailto:[email protected]]
Sent: Thursday, March 28, 2013 5:49 PM
To: [email protected]; Chermak, Dale
Subject: Re: [Ltib] Troubles Adding libusb(x)

On 03/28/2013 06:13 PM, Chermak, Dale wrote:
Greetings.

Full disclosure: I am new to using LTIB and not an expert developing for Linux 
having done primarily Windows development over the years.

I have a DM3730 Torpedo + Wireless SOM from LogicPD that uses LTIB. I have 
managed to get the Ubuntu 10.04 LTS development environment setup, build a 
custom target image and add my own hellotorpedo-1.0 package to the image. All 
good so far. Now I am trying to get to work on the actual project which 
involves communicating with a USB device. Years ago, some summer interns wrote 
an application for the OLPC that used libusb to communicate with a similar USB 
device. I figured I would just use libusb for this current project, leveraging 
whatever code I could salvage from the OLPC project. I created a simple 
project, usbtest, to get started. Launching make from the LTIB shell resulted 
in the following (first) error:

usbtest.cpp:3:20: error: libusb.h: No such file or directory

Sure enough, a not even a find / -iname 'libusb.h' got any hits. Firing up 
./ltib -c I noticed that the libusb package has --- instead of [   ] or [ * ], 
so no way for me to add or remove it I guess?

Searching around I discovered some posts on the Ubuntu forums that mentioned 
doing an apt-get for libusb-1.0-X-dev instead of libusb-dev to use libusb for 
development, which I guess is another way of getting the headers. So perhaps 
the libusb package does not include the headers? It also appears to be the 
'old' version which does not support asynchronous I/O.

At this point, I have gone ahead and downloaded the libusbx (a supposedly more 
active fork of libusb) tarball. It has what I guess is a fairly standard 
./configure, make and make install workflow. I ran ./configure --host=arm-linux 
and that seemed to work. I ran make, and things compiled and linked 
successfully. But I am not sure what to do next. Running make install does what 
I suspected and tries to install things in Ubuntu, but I want it installed in 
my LTIB environment so I can have the shared archive pulled into target image 
and be able to compile and link my usbtest project against it. I took a look at 
the libusb.spec and I suspect using a libusbx.spec file is the proper way to do 
this, but I am not sure what all the steps are, particularly getting the 
headers and shared archive available for the usbtest project. How should I 
proceed?

Sorry for the lengthy description but I wanted to make sure I had enough detail.


Dale, the "---" indicates that libusb is already incorporated in your build 
from LTIB (its selected by "PKG_USBTILS && CAP_HAS_MMU" which are both enabled 
for the LogicPD OMAP35x/DM37x platform).

Digging into the generated rootfs, there's no libusb.h installed by version 
0.1.8 distributed as part of LTIB.  I think (but don't know if) you might have 
better luck upgrading the libusb package to the latest version rather than 
trying to install libusbx instead.  If you download 
http://sourceforge.net/projects/libusb/files/libusb-1.0/libusb-1.0.9/libusb-1.0.9.tar.bz2
 and copy it to /opt/ltib/pkgs, and modify your dist/lfs-5.1/libusb/libusb.spec 
with the following patch:

Index: libusb.spec
===================================================================
--- libusb.spec    (revision 33943)
+++ libusb.spec    (working copy)
@@ -2,13 +2,13 @@

 Summary         : A library which allows userspace access to USB devices
 Name            : libusb
-Version         : 0.1.8
+Version         : 1.0.9
 Release         : 1
 License         : LGPL
 Vendor          : Freescale
 Packager        : Stuart Hughes
 Group           : System Environment/Libraries
-Source          : %{name}-%{version}.tar.gz
+Source          : %{name}-%{version}.tar.bz2
 BuildRoot       : %{_tmppath}/%{name}
 Prefix          : %{pfx}

@@ -17,7 +17,7 @@

 %Prep
 %setup
-libtoolize --copy --force
+# libtoolize --copy --force

 %Build
 # note: I tried version 0.1.10a buy this requires a c++ compiler


Then "./ltib -p libusb" _should_ install into your rootfs 
"rootfs/usr/include/libusb-1.0/libusb.h" that you could include in your 
application.  This version of libusb installs:

peter@turbo:~/work/logic/eps_svn/software/products/linux/LTIB/trunk/ltib-3.0$<mailto:peter@turbo:~/work/logic/eps_svn/software/products/linux/LTIB/trunk/ltib-3.0$>
 rpm2cpio < rpm/RPMS/arm/libusb-1.0.9-1.arm.rpm | cpio -t
./opt/freescale/rootfs/arm/usr
./opt/freescale/rootfs/arm/usr/include
./opt/freescale/rootfs/arm/usr/include/libusb-1.0
./opt/freescale/rootfs/arm/usr/include/libusb-1.0/libusb.h
./opt/freescale/rootfs/arm/usr/lib
./opt/freescale/rootfs/arm/usr/lib/libusb-1.0.a
./opt/freescale/rootfs/arm/usr/lib/libusb-1.0.so
./opt/freescale/rootfs/arm/usr/lib/libusb-1.0.so.0
./opt/freescale/rootfs/arm/usr/lib/libusb-1.0.so.0.1.0
./opt/freescale/rootfs/arm/usr/lib/pkgconfig
./opt/freescale/rootfs/arm/usr/lib/pkgconfig/libusb-1.0.pc
893 blocks

where "./opt/freescale/rootfs/arm/" is removed from the path when the RPM is 
ultimately installed - the rest is relative to the LTIB rootfs/ directory where 
all the packages are installed and the rootfs/ directory is what is used to 
populate your rootfs that you load onto the target.

Note that I've only complied tested this, not run it on actual hardware so your 
"results may vary".  Hope this helps - keep the list posted on your progress.


--

Peter Barada

[email protected]<mailto:[email protected]>

________________________________
The information contained in this message may be confidential and legally 
protected under applicable law. The message is intended solely for the 
addressee(s). If you are not the intended recipient, you are hereby notified 
that any use, forwarding, dissemination, or reproduction of this message is 
strictly prohibited and may be unlawful. If you are not the intended recipient, 
please contact the sender by return e-mail and destroy all copies of the 
original message.
_______________________________________________
LTIB home page: http://ltib.org

Ltib mailing list
[email protected]
https://lists.nongnu.org/mailman/listinfo/ltib

Reply via email to