I believe we statically link the C++ library because otherwise the executable won't run on systems with old .so libraries. What link problem are you seeing? -- David
On 06-Jul-2013 4:37 AM, Gianfranco Costamagna wrote:
Hi David, Rom and all. Recently I faced some problems in building sample apps with ubuntu precise (12.04) release. basically the problem was due to a bad linking in libstdc++.a in sample files. Is this really needed? Seems to be dropping it is ok, no ftbfs at all. I'm attaching the patch for dropping it and simplifying a little bit some makefiles. You can import it with "git am 0001-Simplified-and-removed-libstdc-linking-in-sample-app.patch" --- From 90b5e54142c4ec5bab591ab19a5209245baaa6af Mon Sep 17 00:00:00 2001 From: Gianfranco Costamagna <[email protected]> Date: Sat, 6 Jul 2013 13:24:29 +0200 Subject: [PATCH] Simplified and removed libstdc++ linking in sample apps --- samples/example_app/Makefile | 17 +++++++---------- samples/multi_thread/Makefile | 12 ++++-------- samples/openclapp/Makefile_AMD | 12 ++++-------- samples/openclapp/Makefile_NVIDIA | 12 ++++-------- samples/sleeper/Makefile | 9 +++------ samples/vboxwrapper/Makefile | 9 +++------ samples/wrapper/Makefile | 9 +++------ samples/wrappture/Makefile | 9 +++------ 8 files changed, 31 insertions(+), 58 deletions(-) diff --git a/samples/example_app/Makefile b/samples/example_app/Makefile index 482d8c4..b4bc330 100644 --- a/samples/example_app/Makefile +++ b/samples/example_app/Makefile @@ -44,37 +44,34 @@ PROGS = uc2 \ all: $(PROGS) -libstdc++.a: - ln -s `g++ -print-file-name=libstdc++.a` - ttfont.cpp: ln -s ../../api/ttfont.cpp . clean: distclean distclean: - /bin/rm -f $(PROGS) *.o libstdc++.a + /bin/rm -f $(PROGS) *.o install: uc2 # specify library paths explicitly (rather than -l) # because otherwise you might get a version in /usr/lib etc. -uc2: uc2.o libstdc++.a $(BOINC_API_DIR)/libboinc_api.a $(BOINC_LIB_DIR)/libboinc.a - $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -o uc2 uc2.o libstdc++.a -pthread \ +uc2: uc2.o $(BOINC_API_DIR)/libboinc_api.a $(BOINC_LIB_DIR)/libboinc.a + $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -o uc2 uc2.o -pthread \ $(BOINC_API_DIR)/libboinc_api.a \ $(BOINC_LIB_DIR)/libboinc.a -uc2_graphics: uc2_graphics.o ttfont.o libstdc++.a $(BOINC_LIB_DIR)/libboinc.a $(BOINC_API_DIR)/libboinc_graphics2.a - $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -o uc2_graphics uc2_graphics.o ttfont.o libstdc++.a -pthread \ +uc2_graphics: uc2_graphics.o ttfont.o $(BOINC_LIB_DIR)/libboinc.a $(BOINC_API_DIR)/libboinc_graphics2.a + $(CXX) $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -o uc2_graphics uc2_graphics.o ttfont.o -pthread \ $(BOINC_API_DIR)/libboinc_graphics2.a \ $(BOINC_API_DIR)/libboinc_api.a \ $(BOINC_LIB_DIR)/libboinc.a \ $(LIBGLUT) $(LIBGLU) $(LIBJPEG) \ -lftgl -lGL -lX11 -lXmu -lm -slide_show: slide_show.o libstdc++.a $(BOINC_LIB_DIR)/libboinc.a $(BOINC_API_DIR)/libboinc_graphics2.a - $(CXX) $(CXXFLAGS) -o slide_show slide_show.o libstdc++.a -pthread \ +slide_show: slide_show.o $(BOINC_LIB_DIR)/libboinc.a $(BOINC_API_DIR)/libboinc_graphics2.a + $(CXX) $(CXXFLAGS) -o slide_show slide_show.o -pthread \ $(BOINC_API_DIR)/libboinc_graphics2.a \ $(BOINC_API_DIR)/libboinc_api.a \ $(BOINC_LIB_DIR)/libboinc.a \ diff --git a/samples/multi_thread/Makefile b/samples/multi_thread/Makefile index 48f9b10..50d47f2 100644 --- a/samples/multi_thread/Makefile +++ b/samples/multi_thread/Makefile @@ -16,14 +16,10 @@ PROGS = multi_thread all: $(PROGS) -libstdc++.a: - ln -s `g++ -print-file-name=libstdc++.a` - -clean: - /bin/rm -f $(PROGS) +clean: distclean distclean: - /bin/rm -f $(PROGS) *.o libstdc++.a + /bin/rm -f $(PROGS) *.o -multi_thread: multi_thread.o libstdc++.a $(BOINC_API_DIR)/libboinc_api.a $(BOINC_LIB_DIR)/libboinc.a - $(CXX) $(CXXFLAGS) -o multi_thread multi_thread.o libstdc++.a -pthread -lboinc_api -lboinc +multi_thread: multi_thread.o $(BOINC_API_DIR)/libboinc_api.a $(BOINC_LIB_DIR)/libboinc.a + $(CXX) $(CXXFLAGS) -o multi_thread multi_thread.o -pthread -lboinc_api -lboinc diff --git a/samples/openclapp/Makefile_AMD b/samples/openclapp/Makefile_AMD index 8bbe87f..b07ad21 100644 --- a/samples/openclapp/Makefile_AMD +++ b/samples/openclapp/Makefile_AMD @@ -21,20 +21,16 @@ PROGS = openclapp \ ^M all: $(PROGS)^M ^M -libstdc++.a:^M - ln -s `g++ -print-file-name=libstdc++.a`^M -^M -clean:^M - /bin/rm -f $(PROGS) *.o libstdc++.a^M +clean: distclean^M ^M distclean:^M - /bin/rm -f $(PROGS) *.o libstdc++.a^M + /bin/rm -f $(PROGS) *.o^M ^M install: openclapp^M ^M -openclapp: openclapp.o boinc_opencl.o libstdc++.a^M +openclapp: openclapp.o boinc_opencl.o^M $(CXX) $(CXXFLAGS) -o openclapp openclapp.o boinc_opencl.o \^M - libstdc++.a -lOpenCL -lboinc_api -lboinc -lpthread^M + -lOpenCL -lboinc_api -lboinc -lpthread^M ^M openclapp.o: openclapp.cpp openclapp.hpp^M $(CXX) $(CXXFLAGS) -c openclapp.cpp^M diff --git a/samples/openclapp/Makefile_NVIDIA b/samples/openclapp/Makefile_NVIDIA index 66ea2c6..a3db3d2 100644 --- a/samples/openclapp/Makefile_NVIDIA +++ b/samples/openclapp/Makefile_NVIDIA @@ -21,20 +21,16 @@ PROGS = openclapp \ ^M all: $(PROGS)^M ^M -libstdc++.a:^M - ln -s `g++ -print-file-name=libstdc++.a`^M -^M -clean:^M - /bin/rm -f $(PROGS) *.o libstdc++.a^M +clean: distclean^M ^M distclean:^M - /bin/rm -f $(PROGS) *.o libstdc++.a^M + /bin/rm -f $(PROGS) *.o^M ^M install: openclapp^M ^M -openclapp: openclapp.o boinc_opencl.o libstdc++.a^M +openclapp: openclapp.o boinc_opencl.o^M $(CXX) $(CXXFLAGS) -o openclapp openclapp.o boinc_opencl.o \^M - libstdc++.a -lOpenCL -lboinc_api -lboinc -lpthread^M + -lOpenCL -lboinc_api -lboinc -lpthread^M ^M openclapp.o: openclapp.cpp openclapp.hpp^M $(CXX) $(CXXFLAGS) -c openclapp.cpp^M diff --git a/samples/sleeper/Makefile b/samples/sleeper/Makefile index ade7828..b4c7758 100644 --- a/samples/sleeper/Makefile +++ b/samples/sleeper/Makefile @@ -16,13 +16,10 @@ PROGS = sleeper all: $(PROGS) -libstdc++.a: - ln -s `g++ -print-file-name=libstdc++.a` - clean: distclean distclean: - rm -f $(PROGS) *.o libstdc++.a + rm -f $(PROGS) *.o -sleeper: sleeper.o libstdc++.a $(BOINC_LIB_DIR)/libboinc.a $(BOINC_API_DIR)/libboinc_api.a - g++ $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -o sleeper sleeper.o libstdc++.a -pthread -lboinc_api -lboinc +sleeper: sleeper.o $(BOINC_LIB_DIR)/libboinc.a $(BOINC_API_DIR)/libboinc_api.a + g++ $(CXXFLAGS) $(CPPFLAGS) $(LDFLAGS) -o sleeper sleeper.o -pthread -lboinc_api -lboinc diff --git a/samples/vboxwrapper/Makefile b/samples/vboxwrapper/Makefile index 4762dfc..c1558df 100644 --- a/samples/vboxwrapper/Makefile +++ b/samples/vboxwrapper/Makefile @@ -18,13 +18,10 @@ PROGS = vboxwrapper all: $(PROGS) -libstdc++.a: - ln -s `g++ -print-file-name=libstdc++.a` - clean: distclean distclean: - /bin/rm -f $(PROGS) *.o libstdc++.a + /bin/rm -f $(PROGS) *.o floppyio.o: floppyio.cpp g++ $(CXXFLAGS) -c floppyio.cpp @@ -32,5 +29,5 @@ floppyio.o: floppyio.cpp vbox.o: vbox.cpp g++ $(CXXFLAGS) -c vbox.cpp -vboxwrapper: vboxwrapper.o vbox.o floppyio.o libstdc++.a $(BOINC_LIB_DIR)/libboinc.a $(BOINC_API_DIR)/libboinc_api.a - g++ $(CXXFLAGS) -o vboxwrapper vboxwrapper.o vbox.o floppyio.o libstdc++.a -pthread -lboinc_api -lboinc +vboxwrapper: vboxwrapper.o vbox.o floppyio.o $(BOINC_LIB_DIR)/libboinc.a $(BOINC_API_DIR)/libboinc_api.a + g++ $(CXXFLAGS) -o vboxwrapper vboxwrapper.o vbox.o floppyio.o -pthread -lboinc_api -lboinc diff --git a/samples/wrapper/Makefile b/samples/wrapper/Makefile index bccc0f7..31da7b2 100644 --- a/samples/wrapper/Makefile +++ b/samples/wrapper/Makefile @@ -21,13 +21,10 @@ PROGS = wrapper all: $(PROGS) -libstdc++.a: - ln -s `g++ -print-file-name=libstdc++.a` - clean: distclean distclean: - rm -f $(PROGS) *.o libstdc++.a + rm -f $(PROGS) *.o REGEXP_OBJS = \ regexp.o \ @@ -36,5 +33,5 @@ REGEXP_OBJS = \ regexp_memory.o \ regexp_report.o -wrapper: wrapper.o libstdc++.a $(BOINC_LIB_DIR)/libboinc.a $(BOINC_API_DIR)/libboinc_api.a $(REGEXP_OBJS) - g++ $(CXXFLAGS) $(CPPFLAGS) -o wrapper wrapper.o $(REGEXP_OBJS) libstdc++.a -pthread -lboinc_api -lboinc -lboinc_zip +wrapper: wrapper.o $(BOINC_LIB_DIR)/libboinc.a $(BOINC_API_DIR)/libboinc_api.a $(REGEXP_OBJS) + g++ $(CXXFLAGS) $(CPPFLAGS) -o wrapper wrapper.o $(REGEXP_OBJS) -pthread -lboinc_api -lboinc -lboinc_zip diff --git a/samples/wrappture/Makefile b/samples/wrappture/Makefile index 4894392..b13b996 100644 --- a/samples/wrappture/Makefile +++ b/samples/wrappture/Makefile @@ -20,19 +20,16 @@ PROGS = wrappture_example fermi all: $(PROGS) -libstdc++.a: - ln -s `g++ -print-file-name=libstdc++.a` - clean: distclean distclean: - /bin/rm -f $(PROGS) *.o libstdc++.a + /bin/rm -f $(PROGS) *.o wrappture.o: wrappture.cpp g++ $(CXXFLAGS) -c -o wrappture.o wrappture.cpp -wrappture_example: wrappture.o wrappture_example.o libstdc++.a $(BOINC_LIB_DIR)/libboinc.a $(BOINC_API_DIR)/libboinc_api.a $(RAPPTURE_DIR)/librappture.a - g++ $(CXXFLAGS) -o wrappture_example wrappture_example.o wrappture.o $(RAPPTURE_DIR)/librappture.a libstdc++.a -pthread -lboinc_api -lboinc -lexpat -lz +wrappture_example: wrappture.o wrappture_example.o $(BOINC_LIB_DIR)/libboinc.a $(BOINC_API_DIR)/libboinc_api.a $(RAPPTURE_DIR)/librappture.a + g++ $(CXXFLAGS) -o wrappture_example wrappture_example.o wrappture.o $(RAPPTURE_DIR)/librappture.a -pthread -lboinc_api -lboinc -lexpat -lz fermi: fermi.cpp g++ $(CSSFLAGS) -o fermi fermi.cpp
_______________________________________________ boinc_dev mailing list [email protected] http://lists.ssl.berkeley.edu/mailman/listinfo/boinc_dev To unsubscribe, visit the above URL and (near bottom of page) enter your email address.
