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.

Reply via email to