Compiling in the Intel many core system

I copied the srpm that I had created in my system to the Intel many core system.  I then ran `rpmbuild -ba shore-storage-manager` and after a little tweak managed to get the package built in the intel machine.  The little change had to do with the new features of rpm.  With the new rpm build system one does not need to specify the buildroot.  It will automatically know where to put it.  This is not true for previous versions of rpm (And this is what the intel many cores system has [1]).  The solution is to explicitly tell rpmbuild to choose a directory in /tmp.

Since I don’t have root access in this machine I had to circumvent some little hurdles to actually build the package.  The first one was to tell rpmbuild to use ~/rpm as the rpm directory (which I think is the default in the current rpm package).  I basically executed the following command:

echo "%_topdir    $HOMEDIR/rpm" > ~/.rpmmacros

You should replace $HOMEDIR with your home directory.

Additional from the building I had to install the package in the system to use the headers and the libraries.  Since I was not root I could not install any package that I wanted, so I had to use the -I and -L options from the g++ command to specify the place of the headers and libraries respectively.  I used the following line to build a file that contained `#include “sm_vas.h”` (notice that I used quotation marks “”” instead of “<>”):

g++ file.cpp -I/HOME/usr/include -L/HOME/usr/lib64 -lsthread -lfc -latomic_ops -lpthread -DARCH_LP64

Notice the use of -DARCH_LP64 at the end of the line.  This is needed to include the big file stuff.  I’ve also noticed a test that I have not done yet.  I understand that if one uses -DARCH_LP64 [2] is not needed.  In any case my previous comment still applies.  Shore should be consistent with the use of uint64_t*  vs unsigned long long int*.

Further notice that if you want to build other files that have other shore functionality other that the ones contained in libatomic_ops libsthread libfc, you must add the related -l arguments to your compile line.  So to build startstop.cpp you must include -lsm to your build line.

[1] rpm-4.4.2.3-18.el5
[2] http://www.itu.dk/people/jogr/shore/shore-storage-manager-6.0.1-Beta-uint64.patch
Advertisement

About joelgranados

I'm fascinated with how technology and science impact our reality and am drawn to leverage them in order to increase the potential of human activity.
This entry was posted in Uncategorized. Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s