Why do iostream tests link against static libraries ?
"Kuhl, Brian via Boost-build" <[email protected]> Thu, 22 Apr 2021 03:35:36 +0000
| Newsgroups | gmane.comp.lib.boost.build |
|---|---|
| Message-ID | <DM6PR11MB3914A37D13EEDB0CCA32F02399469@DM6PR11MB3914.namprd11.prod.outlook.com> |
--===============0792758300809907393==
Content-Language: en-US
Content-Type: multipart/alternative;
boundary="_000_DM6PR11MB3914A37D13EEDB0CCA32F02399469DM6PR11MB3914namp_"
--_000_DM6PR11MB3914A37D13EEDB0CCA32F02399469DM6PR11MB3914namp_
Content-Type: text/plain; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
I'm trying to get iostreams working with shared libraries on VxWorks
The tests will compile with clang if I comment out the forced dependency o=
n static libraries
But I'd like to understand the reason for forcing a link of static librarie=
s with a dynamic executable?
https://github.com/boostorg/iostreams/blob/4d2e763ba8b88f3350fbea29b54507a3=
f5adf0f0/test/Jamfile.v2#L25
rule test-iostreams ( sources * : requirements * : target-name ? ) {
return [
run
$(sources)
/boost/test//boost_unit_test_framework # /<link>static
/boost/filesystem//boost_filesystem # /<link>static
: # command
: # input files
: # build requirements
<toolset>msvc:<define>_CRT_SECURE_NO_DEPRECATE
<toolset>msvc:<define>_SCL_SECURE_NO_DEPRECATE
<toolset>cw-9.3,<os>darwin:<runtime-link>static
<define>BOOST_IOSTREAMS_NO_LIB
<link>shared:<define>BOOST_IOSTREAMS_DYN_LINK=3D1
$(requirements)
: $(target-name)
] ;
}
If I don't comments I get a link error.
VxWorks only supports -fpic vs -fPIC
clang-vxworks.compile.c++ ../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/=
debug/cross-compile-vxworks/link-static/unit_test_parameters.o
"wr-c++" -x c++ -Wno-c99-extensions -Wno-variadic-macros -O3 -finline-f=
unctions -Wno-inline -Wall -pedantic -g -Wno-inline -DBOOST_ALL_NO_LIB=3D1 =
-DBOOST_BEAST_ALLOW_DEPRECATED -DBOOST_BEAST_SEPARATE_COMPILATION -I".." -=
c -o "../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile-=
vxworks/link-static/unit_test_parameters.o" "../libs/test/src/unit_test_par=
ameters.cpp"
clang-vxworks.archive ../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debu=
g/cross-compile-vxworks/link-static/libboost_unit_test_framework.a
"wr-ar" rcu "../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cros=
s-compile-vxworks/link-static/libboost_unit_test_framework.a" "../bin.v2/li=
bs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile-vxworks/link-stati=
c/compiler_log_formatter.o" "../bin.v2/libs/test/build/clang-vxworks-11.0.0=
.1/debug/cross-compile-vxworks/link-static/debug.o" "../bin.v2/libs/test/bu=
ild/clang-vxworks-11.0.0.1/debug/cross-compile-vxworks/link-static/decorato=
r.o" "../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile-=
vxworks/link-static/execution_monitor.o" "../bin.v2/libs/test/build/clang-v=
xworks-11.0.0.1/debug/cross-compile-vxworks/link-static/framework.o" "../bi=
n.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile-vxworks/lin=
k-static/plain_report_formatter.o" "../bin.v2/libs/test/build/clang-vxworks=
-11.0.0.1/debug/cross-compile-vxworks/link-static/progress_monitor.o" "../b=
in.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile-vxworks/li=
nk-static/results_collector.o" "../bin.v2/libs/test/build/clang-vxworks-11.=
0.0.1/debug/cross-compile-vxworks/link-static/results_reporter.o" "../bin.v=
2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile-vxworks/link-s=
tatic/test_framework_init_observer.o" "../bin.v2/libs/test/build/clang-vxwo=
rks-11.0.0.1/debug/cross-compile-vxworks/link-static/test_tools.o" "../bin.=
v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile-vxworks/link-=
static/test_tree.o" "../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug=
/cross-compile-vxworks/link-static/unit_test_log.o" "../bin.v2/libs/test/bu=
ild/clang-vxworks-11.0.0.1/debug/cross-compile-vxworks/link-static/unit_tes=
t_main.o" "../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-com=
pile-vxworks/link-static/unit_test_monitor.o" "../bin.v2/libs/test/build/cl=
ang-vxworks-11.0.0.1/debug/cross-compile-vxworks/link-static/unit_test_para=
meters.o" "../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-com=
pile-vxworks/link-static/junit_log_formatter.o" "../bin.v2/libs/test/build/=
clang-vxworks-11.0.0.1/debug/cross-compile-vxworks/link-static/xml_log_form=
atter.o" "../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-comp=
ile-vxworks/link-static/xml_report_formatter.o"
clang-vxworks.link ../bin.v2/libs/iostreams/test/array_test.test/clang-vxwo=
rks-11.0.0.1/debug/cross-compile-vxworks/array_test.vxe
"wr-c++" -o "../bin.v2/libs/iostreams/test/array_test.test/clang-vxwor=
ks-11.0.0.1/debug/cross-compile-vxworks/array_test.vxe" "../bin.v2/libs/=
iostreams/test/array_test.test/clang-vxworks-11.0.0.1/debug/cross-compile-v=
xworks/array_test.o" "../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debu=
g/cross-compile-vxworks/link-static/libboost_unit_test_framework.a" "../bin=
.v2/libs/filesystem/build/clang-vxworks-11.0.0.1/debug/cross-compile-vxwork=
s/link-static/libboost_filesystem.a" -shared --start-group --end-group=
-fpic
/opt/git/vx7/compilers/llvm-11.0.0.1/LINUX64/bin/ldarm: ../bin.v2/libs/test=
/build/clang-vxworks-11.0.0.1/debug/cross-compile-vxworks/link-static/libbo=
ost_unit_test_framework.a(test_tools.o): relocation R_ARM_MOVW_ABS_NC again=
st `a local symbol' can not be used when making a shared object; recompile =
with -fPIC
/opt/git/vx7/compilers/llvm-11.0.0.1/LINUX64/bin/ldarm: ../bin.v2/libs/test=
/build/clang-vxworks-11.0.0.1/debug/cross-compile-vxworks/link-static/libbo=
ost_unit_test_framework.a(test_tree.o): relocation R_ARM_MOVW_ABS_NC agains=
t `a local symbol' can not be used when making a shared object; recompile w=
ith -fPIC
--_000_DM6PR11MB3914A37D13EEDB0CCA32F02399469DM6PR11MB3914namp_
Content-Type: text/html; charset="us-ascii"
Content-Transfer-Encoding: quoted-printable
<html xmlns:v=3D"urn:schemas-microsoft-com:vml" xmlns:o=3D"urn:schemas-micr=
osoft-com:office:office" xmlns:w=3D"urn:schemas-microsoft-com:office:word" =
xmlns:m=3D"http://schemas.microsoft.com/office/2004/12/omml" xmlns=3D"http:=
//www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3D"Content-Type" content=3D"text/html; charset=3Dus-ascii"=
>
<meta name=3D"Generator" content=3D"Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
{font-family:"Cambria Math";
panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
{font-family:Calibri;
panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:#0563C1;
text-decoration:underline;}
span.EmailStyle17
{mso-style-type:personal-compose;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-family:"Calibri",sans-serif;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang=3D"EN-US" link=3D"#0563C1" vlink=3D"#954F72" style=3D"word-wrap:=
break-word">
<div class=3D"WordSection1">
<p class=3D"MsoNormal">I’m trying to get iostreams working with share=
d libraries on VxWorks<o:p></o:p></p>
<p class=3D"MsoNormal">The tests will compile with clang if I comment=
out the forced dependency on static libraries<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal">But I’d like to understand the reason for forc=
ing a link of static libraries with a dynamic executable?<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal"><a href=3D"https://github.com/boostorg/iostreams/blo=
b/4d2e763ba8b88f3350fbea29b54507a3f5adf0f0/test/Jamfile.v2#L25">https://git=
hub.com/boostorg/iostreams/blob/4d2e763ba8b88f3350fbea29b54507a3f5adf0f0/te=
st/Jamfile.v2#L25</a><o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal">rule test-iostreams ( sources * : requirements * : t=
arget-name ? ) {<o:p></o:p></p>
<p class=3D"MsoNormal"> return [<o:p></o:p></p>
<p class=3D"MsoNormal"> &nbs=
p; run<o:p></o:p></p>
<p class=3D"MsoNormal"> &nbs=
p; $(sources)<o:p></o:p></p>
<p class=3D"MsoNormal"> &nbs=
p; /boost/test//boost_unit_test_framewo=
rk # /<link>static<o:p></o:p></p>
<p class=3D"MsoNormal"> &nbs=
p; /boost/filesystem//boost_filesystem&=
nbsp; # /<link>static<o:p></o:p></p>
<p class=3D"MsoNormal"> &nbs=
p; : # command<o:p></o:p></p>
<p class=3D"MsoNormal"> &nbs=
p; : # input files<o:p></o:p></p>
<p class=3D"MsoNormal"> &nbs=
p; : # build requirements<o:p></o:p></p>
<p class=3D"MsoNormal"> &nbs=
p; <toolset>msvc:<define>_C=
RT_SECURE_NO_DEPRECATE<o:p></o:p></p>
<p class=3D"MsoNormal"> &nbs=
p; <toolset>msvc:<define>_S=
CL_SECURE_NO_DEPRECATE<o:p></o:p></p>
<p class=3D"MsoNormal"> &nbs=
p; <toolset>cw-9.3,<os>darw=
in:<runtime-link>static<o:p></o:p></p>
<p class=3D"MsoNormal"> &nbs=
p; <define>BOOST_IOSTREAMS_NO_LIB=
<o:p></o:p></p>
<p class=3D"MsoNormal"> &nbs=
p; <link>shared:<define>BOO=
ST_IOSTREAMS_DYN_LINK=3D1<o:p></o:p></p>
<p class=3D"MsoNormal"> &nbs=
p; $(requirements)<o:p></o:p></p>
<p class=3D"MsoNormal"> &nbs=
p; : $(target-name)<o:p></o:p></p>
<p class=3D"MsoNormal"> ] ;<o:p><=
/o:p></p>
<p class=3D"MsoNormal">}<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal">If I don’t comments I get a link error. <o:p><=
/o:p></p>
<p class=3D"MsoNormal">VxWorks only supports -fpic vs -fPIC<o:p></o:p></p>
<p class=3D"MsoNormal"><o:p> </o:p></p>
<p class=3D"MsoNormal">clang-vxworks.compile.c++ ../bin.v2/libs/test/build/=
clang-vxworks-11.0.0.1/debug/cross-compile-vxworks/link-static/unit_test_pa=
rameters.o<o:p></o:p></p>
<p class=3D"MsoNormal"> "wr-c++" -x c++ -Wno-c9=
9-extensions -Wno-variadic-macros -O3 -finline-functions -Wno-inline -Wall =
-pedantic -g -Wno-inline -DBOOST_ALL_NO_LIB=3D1 -DBOOST_BEAST_ALLOW_DEPRECA=
TED -DBOOST_BEAST_SEPARATE_COMPILATION -I".." -c -o ".=
./bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile-vxworks=
/link-static/unit_test_parameters.o"
"../libs/test/src/unit_test_parameters.cpp"<o:p></o:p></p>
<p class=3D"MsoNormal">clang-vxworks.archive ../bin.v2/libs/test/build/clan=
g-vxworks-11.0.0.1/debug/cross-compile-vxworks/link-static/libboost_unit_te=
st_framework.a<o:p></o:p></p>
<p class=3D"MsoNormal"> "wr-ar" rcu "../bin.v2/l=
ibs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile-vxworks/link-stat=
ic/libboost_unit_test_framework.a" "../bin.v2/libs/test/build/cla=
ng-vxworks-11.0.0.1/debug/cross-compile-vxworks/link-static/compiler_log_fo=
rmatter.o"
"../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile=
-vxworks/link-static/debug.o" "../bin.v2/libs/test/build/clang-vx=
works-11.0.0.1/debug/cross-compile-vxworks/link-static/decorator.o" &q=
uot;../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile-vx=
works/link-static/execution_monitor.o"
"../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile=
-vxworks/link-static/framework.o" "../bin.v2/libs/test/build/clan=
g-vxworks-11.0.0.1/debug/cross-compile-vxworks/link-static/plain_report_for=
matter.o" "../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug=
/cross-compile-vxworks/link-static/progress_monitor.o"
"../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile=
-vxworks/link-static/results_collector.o" "../bin.v2/libs/test/bu=
ild/clang-vxworks-11.0.0.1/debug/cross-compile-vxworks/link-static/results_=
reporter.o" "../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/deb=
ug/cross-compile-vxworks/link-static/test_framework_init_observer.o"
"../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile=
-vxworks/link-static/test_tools.o" "../bin.v2/libs/test/build/cla=
ng-vxworks-11.0.0.1/debug/cross-compile-vxworks/link-static/test_tree.o&quo=
t; "../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-compi=
le-vxworks/link-static/unit_test_log.o"
"../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile=
-vxworks/link-static/unit_test_main.o" "../bin.v2/libs/test/build=
/clang-vxworks-11.0.0.1/debug/cross-compile-vxworks/link-static/unit_test_m=
onitor.o" "../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug=
/cross-compile-vxworks/link-static/unit_test_parameters.o"
"../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile=
-vxworks/link-static/junit_log_formatter.o" "../bin.v2/libs/test/=
build/clang-vxworks-11.0.0.1/debug/cross-compile-vxworks/link-static/xml_lo=
g_formatter.o" "../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/=
debug/cross-compile-vxworks/link-static/xml_report_formatter.o"<o:p></=
o:p></p>
<p class=3D"MsoNormal">clang-vxworks.link ../bin.v2/libs/iostreams/test/arr=
ay_test.test/clang-vxworks-11.0.0.1/debug/cross-compile-vxworks/array_test.=
vxe<o:p></o:p></p>
<p class=3D"MsoNormal"> "wr-c++" -o "=
;../bin.v2/libs/iostreams/test/array_test.test/clang-vxworks-11.0.0.1/debug=
/cross-compile-vxworks/array_test.vxe" "../bin.=
v2/libs/iostreams/test/array_test.test/clang-vxworks-11.0.0.1/debug/cross-c=
ompile-vxworks/array_test.o"
"../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile=
-vxworks/link-static/libboost_unit_test_framework.a" "../bin.v2/l=
ibs/filesystem/build/clang-vxworks-11.0.0.1/debug/cross-compile-vxworks/lin=
k-static/libboost_filesystem.a" -shared --start-group  =
;
--end-group -fpic <o:p></o:p></p>
<p class=3D"MsoNormal">/opt/git/vx7/compilers/llvm-11.0.0.1/LINUX64/bin/lda=
rm: ../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile-vx=
works/link-static/libboost_unit_test_framework.a(test_tools.o): relocation =
R_ARM_MOVW_ABS_NC against `a local
symbol' can not be used when making a shared object; recompile with -fPIC<=
o:p></o:p></p>
<p class=3D"MsoNormal">/opt/git/vx7/compilers/llvm-11.0.0.1/LINUX64/bin/lda=
rm: ../bin.v2/libs/test/build/clang-vxworks-11.0.0.1/debug/cross-compile-vx=
works/link-static/libboost_unit_test_framework.a(test_tree.o): relocation R=
_ARM_MOVW_ABS_NC against `a local
symbol' can not be used when making a shared object; recompile with -fPIC<=
o:p></o:p></p>
</div>
</body>
</html>
--_000_DM6PR11MB3914A37D13EEDB0CCA32F02399469DM6PR11MB3914namp_--
--===============0792758300809907393==
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
Unsubscribe & other changes: https://lists.boost.org/mailman/listinfo.cgi/boost-build
--===============0792758300809907393==--