Hi all
I'm trying to trying to install MPLS-Linux on my computer. Following the
recomendations on [1], i decided to use the RPM packages for Fedora Core 10.
More specifically, i installed the following:
- kernel-2.6.27.24-170.2.68.fc10.mpls.1.963.i686.rpm
- kernel-headers-2.6.27.24-170.2.68.fc10.mpls.1.963.i386.rpm
- iproute-2.6.27-2.fc10.mpls.1.963.i386.rpm
After to see that all of they work perfectly, I decided to install Quagga
with MPLS support. For this, i follow the following steps:
git clone git://repo.or.cz/mpls-ldp-portable.git
git clone git://repo.or.cz/mpls-quagga.git
cd mpls-quagga
git checkout -b mpls-master --track origin/mpls-master
cd ldpd
vi create-links (modify to point to the mpls-ldp-portable source)
./create-links
cd ..
./make-rpm-jleu (after fix some problems in the script)
The compilation fails returning this error:
impl_lock.o: In function `mpls_lock_release':
/root/rpmbuild/BUILD/quagga-0.99.15/ldpd/impl_lock.c:22: undefined reference
to `mpls_assert'
impl_lock.o: In function `mpls_lock_get':
/root/rpmbuild/BUILD/quagga-0.99.15/ldpd/impl_lock.c:16: undefined reference
to `mpls_assert'
impl_mpls.o: In function `mpls_mpls_outsegment_del':
/root/rpmbuild/BUILD/quagga-0.99.15/ldpd/impl_mpls.c:115: undefined
reference to `mpls_assert'
impl_mpls.o: In function `mpls_mpls_outsegment_add':
/root/rpmbuild/BUILD/quagga-0.99.15/ldpd/impl_mpls.c:71: undefined reference
to `mpls_assert'
impl_socket.o: In function `mpls_socket_writelist_add':
/root/rpmbuild/BUILD/quagga-0.99.15/ldpd/impl_socket.c:469: undefined
reference to `mpls_assert'
impl_socket.o:/root/rpmbuild/BUILD/quagga-0.99.15/ldpd/impl_socket.c:471:
more undefined references to `mpls_assert' follow
collect2: ld returned 1 exit status
make[2]: *** [ldpd] Error 1
make[2]: se sale del directorio `/root/rpmbuild/BUILD/quagga-0.99.15/ldpd'
make[1]: *** [all-recursive] Error 1
make[1]: se sale del directorio `/root/rpmbuild/BUILD/quagga-0.99.15'
make: *** [all] Error 2
I don't know where is the origin of this problem. I tried to compile with
GCC 4.3 and also GCC 4.1 with same results.
I was looking on "mpls_assert.h" and found this:
#define NO_ASSERT_PLEASE
#ifdef NO_ASSERT_PLEASE
extern void mpls_assert(const char* func, const int line, int condition);
#define MPLS_ASSERT(x) mpls_assert(__func__, __LINE__, (int)(x))
#else
#define MPLS_ASSERT(x) assert(x)
#endif
In impl_mpls.c for example, there is a call to MPLS_ASSERT that returns
error by GCC:
void mpls_lock_get(mpls_lock_handle handle)
{
MPLS_ASSERT (*handle == 0);
(*handle)++;
}
I don't know where is the problem or how to fix it.
Best Regards,
Ricardo.
[1]
http://sourceforge.net/apps/mediawiki/mpls-linux/index.php?title=Main_Page
|