The problem is with OLD ubuntu releases (12.04 e.g.).

With newer ubuntu releases the static linking can be safely dropped (at least 
for what concernes the building phase).

If that one was a workaround for older gcc version I think this is time to drop 
it.

(even because it was working for really older gcc versions, stopped working for 
the middle gcc version and now works again)

the log from the fail is this one

make[2]: Entering directory 
`/build/buildd/boinc-7.2.0~nightly1~~git20130620+r19549/samples/sleeper'
g++ -g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat 
-Wformat-security -Werror=format-security -Wall  -g -I../.. -I../../lib 
-I../../api -L../../api -L../../lib -L. -D_FORTIFY_SOURCE=2  -c -o sleeper.o 
sleeper.cpp
In file included from ../../lib/miofile.h:27:0, from ../../lib/hostinfo.h:31, 
from ../../lib/app_ipc.h:27, from ../../api/boinc_api.h:26, from sleeper.cpp:23:
../../lib/mfile.h:43:9: note: the mangling of 'va_list' has changed in GCC 4.4
ln -s `g++ -print-file-name=libstdc++.a`
g++ -g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat 
-Wformat-security -Werror=format-security -Wall  -g -I../.. -I../../lib 
-I../../api -L../../api -L../../lib -L. -D_FORTIFY_SOURCE=2 
-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now -Wl,--no-add-needed 
-o sleeper sleeper.o libstdc++.a -pthread -lboinc_api -lboinc
/usr/bin/ld: ./libstdc++.a(functexcept.o): relocation R_ARM_THM_MOVW_ABS_NC 
against `typeinfo for std::bad_exception' can not be used when making a shared 
object; recompile with -fPIC
./libstdc++.a: could not read symbols: Bad value
collect2: ld returned 1 exit status
make[2]: *** [sleeper] Error 1
make[2]: Leaving directory 
`/build/buildd/boinc-7.2.0~nightly1~~git20130620+r19549/samples/sleeper'
make[1]: *** [override_dh_auto_build] Error 2
make[1]: Leaving directory 
`/build/buildd/boinc-7.2.0~nightly1~~git20130620+r19549'
make: *** [build] Error 2
dpkg-buildpackage: error: debian/rules build gave error exit status 2


Gianfranco



----- Messaggio originale -----
> Da: David Anderson <[email protected]>
> A: Gianfranco Costamagna <[email protected]>
> Cc: Rom Walton <[email protected]>; "[email protected]" 
> <[email protected]>
> Inviato: Domenica 7 Luglio 2013 22:39
> Oggetto: Re: boinc libstdc++ linking
> 
> 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