Fix linking problems

epel8
Ding-Yi Chen 17 years ago
parent fe7c948b65
commit 7e0dcdf9f1

@ -240,23 +240,34 @@ diff -up ./tools/grid.py.orig ./tools/grid.py
assert os.path.exists(dataset_pathname),"dataset not found" assert os.path.exists(dataset_pathname),"dataset not found"
diff -up ./Makefile.orig ./Makefile diff -up ./Makefile.orig ./Makefile
--- ./Makefile.orig 2007-11-06 23:32:49.000000000 +1000 --- ./Makefile.orig 2007-11-06 23:32:49.000000000 +1000
+++ ./Makefile 2008-02-05 11:00:21.000000000 +1000 +++ ./Makefile 2008-02-06 15:12:25.000000000 +1000
@@ -1,8 +1,41 @@ @@ -1,15 +1,111 @@
CXX? = g++ CXX? = g++
CFLAGS = -Wall -O3 CFLAGS = -Wall -O3
+MAKE = make +MAKE = make
+LIBSVM_VER_MAJOR=2 +LIBSVM_VER_MAJOR=2
+LIBSVM_VER_MINOR=85 +LIBSVM_VER_MINOR=85
+LIBSVM_VER=${LIBSVM_VER_MAJOR}.${LIBSVM_VER_MINOR} +LIBSVM_VER=${LIBSVM_VER_MAJOR}.${LIBSVM_VER_MINOR}
+export LIBSVM_VER +DOT_LIBS=.libs
+LIBS= -L${DOT_LIBS} -lsvm
-all: svm-train svm-predict svm-scale -all: svm-train svm-predict svm-scale
+export LIBSVM_VER
-svm-predict: svm-predict.c svm.o
- $(CXX) $(CFLAGS) svm-predict.c svm.o -o svm-predict -lm
-svm-train: svm-train.c svm.o
- $(CXX) $(CFLAGS) svm-train.c svm.o -o svm-train -lm
-svm-scale: svm-scale.c
- $(CXX) $(CFLAGS) svm-scale.c -o svm-scale
-svm.o: svm.cpp svm.h
- $(CXX) $(CFLAGS) -c svm.cpp
+ifndef DESTDIR +ifndef DESTDIR
+INSTDIR=/usr +INSTDIR=/usr
+else +else
+INSTDIR=${DESTDIR}/usr +INSTDIR=${DESTDIR}/usr
+endif +endif
+
+export INSTDIR +export INSTDIR
+ +
+IS_64=$(shell /bin/uname -i | awk '/64/ {print 64}') +IS_64=$(shell /bin/uname -i | awk '/64/ {print 64}')
@ -276,17 +287,23 @@ diff -up ./Makefile.orig ./Makefile
+ +
+all: svm-train svm-predict svm-scale svm-python svm-java svm-lib svm-toy-gtk svm-toy-qt +all: svm-train svm-predict svm-scale svm-python svm-java svm-lib svm-toy-gtk svm-toy-qt
+ +
+svm-lib: svm-share.o +svm-lib: %{DOT_LIBS}/libsvm.so
+
+%{DOT_LIBS}/libsvm.so: svm-share.o
+ $(CXX) -shared -Wl,-soname,libsvm.so.${LIBSVM_VER_MAJOR}\ + $(CXX) -shared -Wl,-soname,libsvm.so.${LIBSVM_VER_MAJOR}\
+ -o libsvm.so.${LIBSVM_VER} svm-share.o -lm + -o libsvm.so.${LIBSVM_VER} svm-share.o -lm
+ mkdir -p .libs
+ cd ${DOT_LIBS}; ln -sf ../libsvm.so.${LIBSVM_VER} libsvm.so
+svm-share.o: svm.cpp svm.h +svm-share.o: svm.cpp svm.h
+ $(CXX) -g -fPIC $(CFLAGS) -c svm.cpp -o svm-share.o + $(CXX) -g -fPIC $(CFLAGS) -c svm.cpp -o svm-share.o
svm-predict: svm-predict.c svm.o +svm-predict: svm-predict.c %{DOT_LIBS}/libsvm.so
$(CXX) $(CFLAGS) svm-predict.c svm.o -o svm-predict -lm + $(CXX) $(CFLAGS) svm-predict.c -o svm-predict $(LIBS) -lm
svm-train: svm-train.c svm.o +svm-train: svm-train.c %{DOT_LIBS}/libsvm.so
@@ -12,4 +45,61 @@ svm-scale: svm-scale.c + $(CXX) $(CFLAGS) svm-train.c -o svm-train $(LIBS) -lm
svm.o: svm.cpp svm.h +svm-scale: svm-scale.c %{DOT_LIBS}/libsvm.so
$(CXX) $(CFLAGS) -c svm.cpp + $(CXX) $(CFLAGS) svm-scale.c -o svm-scale $(LIBS)
+#svm.o: svm.cpp svm.h
+# $(CXX) $(CFLAGS) -c svm.cpp
clean: clean:
- rm -f *~ svm.o svm-train svm-predict svm-scale - rm -f *~ svm.o svm-train svm-predict svm-scale
+ rm -f *~ svm.o svm-train svm-predict svm-scale svm-toy/gtk/svm-toy-gtk svm-toy/qt/svm-toy-qt + rm -f *~ svm.o svm-train svm-predict svm-scale svm-toy/gtk/svm-toy-gtk svm-toy/qt/svm-toy-qt
@ -306,11 +323,10 @@ diff -up ./Makefile.orig ./Makefile
+ install -m 755 svm-train ${INSTDIR}/bin + install -m 755 svm-train ${INSTDIR}/bin
+ install -m 755 svm-predict ${INSTDIR}/bin + install -m 755 svm-predict ${INSTDIR}/bin
+ install -m 755 svm-scale ${INSTDIR}/bin + install -m 755 svm-scale ${INSTDIR}/bin
+ mkdir -p ${LIB_INSTDIR}/libsvm
+ mkdir -p ${LIB_INSTDIR} + mkdir -p ${LIB_INSTDIR}
+ install -m 755 libsvm.so.${LIBSVM_VER} ${LIB_INSTDIR}/libsvm + install -m 755 libsvm.so.${LIBSVM_VER} ${LIB_INSTDIR}
+# cd ${LIB_INSTDIR}/libsvm; ln -fs libsvm.so.${LIBSVM_VER_MAJOR} libsvm.so + /sbin/ldconfig -n ${LIB_INSTDIR}
+ /sbin/ldconfig -n ${LIB_INSTDIR}/libsvm/ + cd ${LIB_INSTDIR}; ln -fs libsvm.so.${LIBSVM_VER_MAJOR} libsvm.so
+# install package libsvm-devel +# install package libsvm-devel
+ mkdir -p ${INSTDIR}/include/libsvm + mkdir -p ${INSTDIR}/include/libsvm
+ install -m 644 svm.h ${INSTDIR}/include/libsvm + install -m 644 svm.h ${INSTDIR}/include/libsvm
@ -349,24 +365,26 @@ diff -up ./Makefile.orig ./Makefile
+ +
diff -up ./svm-toy/qt/Makefile.orig ./svm-toy/qt/Makefile diff -up ./svm-toy/qt/Makefile.orig ./svm-toy/qt/Makefile
--- ./svm-toy/qt/Makefile.orig 2008-02-04 15:59:51.000000000 +1000 --- ./svm-toy/qt/Makefile.orig 2008-02-04 15:59:51.000000000 +1000
+++ ./svm-toy/qt/Makefile 2008-02-04 17:19:43.000000000 +1000 +++ ./svm-toy/qt/Makefile 2008-02-06 15:08:55.000000000 +1000
@@ -1,5 +1,6 @@ @@ -1,19 +1,23 @@
CXX? = g++ CXX? = g++
CFLAGS = -Wall -O3 -DQT_THREAD_SUPPORT CFLAGS = -Wall -O3 -DQT_THREAD_SUPPORT
+QTDIR = $(LIBDIR)/qt-3.3 +QTDIR = $(LIBDIR)/qt-3.3
BIN = $(QTDIR)/bin BIN = $(QTDIR)/bin
INCLUDE = $(QTDIR)/include INCLUDE = $(QTDIR)/include
LIB = $(QTDIR)/lib LIB = $(QTDIR)/lib
@@ -7,13 +8,17 @@ LIB = $(QTDIR)/lib -#BIN = /usr/bin
#INCLUDE = /usr/include/qt3 -#INCLUDE = /usr/include/qt3
#LIB = /usr/lib/qt3 -#LIB = /usr/lib/qt3
+DOT_LIBS=../../.libs
+LIBS= -L${DOT_LIBS} -lsvm
-svm-toy: svm-toy.cpp svm-toy.moc ../../svm.o -svm-toy: svm-toy.cpp svm-toy.moc ../../svm.o
- $(CXX) -I$(INCLUDE) $(CFLAGS) svm-toy.cpp ../../svm.o -o svm-toy -L$(LIB) -lqt-mt - $(CXX) -I$(INCLUDE) $(CFLAGS) svm-toy.cpp ../../svm.o -o svm-toy -L$(LIB) -lqt-mt
+all: svm-toy-qt +all: svm-toy-qt
+ +
+svm-toy-qt: svm-toy.cpp svm-toy.moc ../../svm.o +svm-toy-qt: svm-toy.cpp svm-toy.moc ../../svm.o
+ $(CXX) -I$(INCLUDE) $(CFLAGS) svm-toy.cpp ../../svm.o -o svm-toy-qt -L$(LIB) -lqt-mt + $(CXX) -I$(INCLUDE) $(CFLAGS) svm-toy.cpp ../../svm.o -o svm-toy-qt -L$(LIB) $(LIBS) -lqt-mt
# add -pthread for bsd # add -pthread for bsd
svm-toy.moc: svm-toy.cpp svm-toy.moc: svm-toy.cpp
@ -381,8 +399,8 @@ diff -up ./svm-toy/qt/Makefile.orig ./svm-toy/qt/Makefile
rm -f *~ svm-toy svm-toy.moc ../../svm.o rm -f *~ svm-toy svm-toy.moc ../../svm.o
diff -up ./svm-toy/gtk/Makefile.orig ./svm-toy/gtk/Makefile diff -up ./svm-toy/gtk/Makefile.orig ./svm-toy/gtk/Makefile
--- ./svm-toy/gtk/Makefile.orig 2008-02-04 15:44:19.000000000 +1000 --- ./svm-toy/gtk/Makefile.orig 2008-02-04 15:44:19.000000000 +1000
+++ ./svm-toy/gtk/Makefile 2008-02-05 09:33:08.000000000 +1000 +++ ./svm-toy/gtk/Makefile 2008-02-06 15:08:10.000000000 +1000
@@ -1,22 +1,25 @@ @@ -1,22 +1,28 @@
CC? = gcc CC? = gcc
CXX? = g++ CXX? = g++
-CFLAGS = -Wall -O3 -g `gtk-config --cflags` -CFLAGS = -Wall -O3 -g `gtk-config --cflags`
@ -390,13 +408,16 @@ diff -up ./svm-toy/gtk/Makefile.orig ./svm-toy/gtk/Makefile
+#CFLAGS = -Wall -O3 -g `gtk-config --cflags` +#CFLAGS = -Wall -O3 -g `gtk-config --cflags`
+#LIBS = `gtk-config --libs` +#LIBS = `gtk-config --libs`
+COPT = `pkg-config --cflags --libs gtk+-2.0` +COPT = `pkg-config --cflags --libs gtk+-2.0`
+DOT_LIBS=../../.libs
+LIBS= -L${DOT_LIBS} -lsvm
-svm-toy: main.o interface.o callbacks.o ../../svm.o -svm-toy: main.o interface.o callbacks.o ../../svm.o
- $(CXX) $(CFLAGS) main.o interface.o callbacks.o ../../svm.o -o svm-toy $(LIBS) - $(CXX) $(CFLAGS) main.o interface.o callbacks.o ../../svm.o -o svm-toy $(LIBS)
+
+all: svm-toy-gtk +all: svm-toy-gtk
+ +
+svm-toy-gtk: main.o interface.o callbacks.o ../../svm.o +svm-toy-gtk: main.o interface.o callbacks.o
+ $(CXX) $(COPT) main.o interface.o callbacks.o ../../svm.o -o svm-toy-gtk + $(CXX) $(COPT) main.o interface.o callbacks.o ${LIBS} -o svm-toy-gtk
main.o: main.c main.o: main.c
- $(CC) $(CFLAGS) -c main.c - $(CC) $(CFLAGS) -c main.c
@ -410,8 +431,10 @@ diff -up ./svm-toy/gtk/Makefile.orig ./svm-toy/gtk/Makefile
- $(CXX) $(CFLAGS) -c callbacks.cpp - $(CXX) $(CFLAGS) -c callbacks.cpp
+ $(CXX) $(COPT) -c callbacks.cpp + $(CXX) $(COPT) -c callbacks.cpp
../../svm.o: -../../svm.o:
cd ../..; make svm.o - cd ../..; make svm.o
+#../../svm.o:
+# cd ../..; make svm.o
clean: clean:
- rm -f *~ callbacks.o svm-toy main.o interface.o callbacks.o ../../svm.o - rm -f *~ callbacks.o svm-toy main.o interface.o callbacks.o ../../svm.o

@ -1,6 +1,6 @@
Name: libsvm Name: libsvm
Version: 2.85 Version: 2.85
Release: 2%{?dist} Release: 3%{?dist}
Summary: A Library for Support Vector Machines Summary: A Library for Support Vector Machines
Group: Development/Libraries Group: Development/Libraries
@ -111,11 +111,9 @@ make install DESTDIR=$RPM_BUILD_ROOT LIBDIR=%{_libdir} PYTHON_VERSION="%{pyver}"
rm -rf $RPM_BUILD_ROOT%{_datadir}/%{name}/src rm -rf $RPM_BUILD_ROOT%{_datadir}/%{name}/src
%post %post -p /sbin/ldconfig
/sbin/ldconfig %{libdir_libsvm}
%postun %postun -p /sbin/ldconfig
/sbin/ldconfig %{libdir_libsvm}
%clean %clean
rm -rf $RPM_BUILD_ROOT rm -rf $RPM_BUILD_ROOT
@ -129,16 +127,15 @@ rm -rf $RPM_BUILD_ROOT
%{_bindir}/svm-train %{_bindir}/svm-train
%dir %{_datadir}/%{name} %dir %{_datadir}/%{name}
%{_datadir}/%{name}/examples %{_datadir}/%{name}/examples
%dir %{libdir_libsvm} %{_libdir}/%{name}.so.%{version}
%{libdir_libsvm}/%{name}.so.%{version} %{_libdir}/%{name}.so.%{libsvm_ver_major}
%{libdir_libsvm}/%{name}.so.%{libsvm_ver_major}
%files devel %files devel
%defattr(-,root,root,-) %defattr(-,root,root,-)
%doc README %doc README
%{_includedir}/%{name}/ %{_includedir}/%{name}/
#%{libdir_libsvm}/%{name}.so %{_libdir}/%{name}.so
%files python %files python
%defattr(-,root,root,-) %defattr(-,root,root,-)
@ -163,6 +160,10 @@ rm -rf $RPM_BUILD_ROOT
%changelog %changelog
* Thu Feb 07 2008 Ding-Yi Chen <dchen@redhat.com> - 2.85-3
- Fix linker name (libsvm.so)
- Linked to dynamic libraries
* Tue Feb 05 2008 Ding-Yi Chen <dchen@redhat.com> - 2.85-2 * Tue Feb 05 2008 Ding-Yi Chen <dchen@redhat.com> - 2.85-2
- Fix svm-toy-qt build error - Fix svm-toy-qt build error

Loading…
Cancel
Save