<html xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="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;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:purple;
text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
{mso-style-name:msonormal;
mso-margin-top-alt:auto;
margin-right:0in;
mso-margin-bottom-alt:auto;
margin-left:0in;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
span.EmailStyle18
{mso-style-type:personal-reply;
font-family:"Calibri",sans-serif;
color:windowtext;}
.MsoChpDefault
{mso-style-type:export-only;
font-size:10.0pt;}
@page WordSection1
{size:8.5in 11.0in;
margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
{page:WordSection1;}
--></style>
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">Is there any reason you're invoking the linker directly? That's usually fraught with peril, and it's best to let the driver take care of that for you … I do see that you're linking all the start files yourself, but the ordering can also
make a difference.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">What happens if you just run something like `clang++ -static main.cpp`? Does the resulting a.out run successfully? (The `-static` should get passed from the driver to the linker.)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div style="border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in 0in">
<p class="MsoNormal" style="margin-left:.5in"><b><span style="font-size:12.0pt;color:black">From:
</span></b><span style="font-size:12.0pt;color:black">cfe-dev <cfe-dev-bounces@lists.llvm.org> on behalf of cfe-dev <cfe-dev@lists.llvm.org><br>
<b>Reply-To: </b>Wink Saville <wink@saville.com><br>
<b>Date: </b>Tuesday, June 26, 2018 at 2:13 PM<br>
<b>To: </b>cfe-dev <cfe-dev@lists.llvm.org><br>
<b>Subject: </b>[cfe-dev] Static linking a program<o:p></o:p></span></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">I've created a simple program [1] which I'm trying to statically link.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">I've got it compiling and linking, but it segfaults when I run it. Obvioulsy<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">I'm linking the wrong libraries, advice appreciated:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> $ cat main.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> #include <iostream><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> int main(int argc, char *argv[]) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> for (int i=0; i < argc; i++) {<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> std::cout << "argv[" << i << "]: " << argv[i] << std::endl;<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> }<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> $ cat Makefile<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> CXX:=clang++<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> CFLAGS:=-std=c++17 -Wall -pedantic -static<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> LINKER:=ld.lld<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> LFLAGS:=-Bstatic<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> LIBS=/usr/lib/libstdc++.a<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> LIBS+=/usr/lib/gcc/x86_64-pc-linux-gnu/8.1.1/libgcc_eh.a<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> LIBS+=/usr/lib/gcc/x86_64-pc-linux-gnu/8.1.1/libgcc.a<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> LIBS+=/usr/lib/libc.a<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> LIBS+=/usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> main: main.o Makefile<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> $(LINKER) $(LFLAGS) -o $@ $< $(LIBS)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> main.o: main.cpp Makefile<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> $(CXX) $(CFLAGS) -c -o $@ $<<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> .PHONY: clean<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> clean:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> rm -rf main.o main<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> $ ld.lld --version<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> LLD 6.0.0 (compatible with GNU linkers)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> wink@wink-desktop:~/prgs/explore-cpp/static-linking<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> $ clang++ --version<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> clang version 6.0.0 (tags/RELEASE_600/final)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Target: x86_64-pc-linux-gnu<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Thread model: posix<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> InstalledDir: /usr/bin<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> $ make clean && make<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> rm -rf main.o main<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> clang++ -std=c++17 -Wall -pedantic -static -c -o main.o main.cpp<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> ld.lld -Bstatic -o main main.o /usr/lib/libstdc++.a<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">/usr/lib/gcc/x86_64-pc-linux-gnu/8.1.1/libgcc_eh.a<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">/usr/lib/gcc/x86_64-pc-linux-gnu/8.1.1/libgcc.a /usr/lib/libc.a<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">/usr/lib/crt1.o /usr/lib/crti.o /usr/lib/crtn.o<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> wink@wink-desktop:~/prgs/explore-cpp/static-linking (master)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> $ ./main<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Segmentation fault (core dumped)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> wink@wink-desktop:~/prgs/explore-cpp/static-linking (master)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> $ coredumpctl gdb<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> PID: 23339 (main)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> UID: 1000 (wink)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> GID: 100 (users)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Signal: 11 (SEGV)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Timestamp: Tue 2018-06-26 13:51:43 PDT (7s ago)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Command Line: ./main<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Executable: /home/wink/prgs/explore-cpp/static-linking/main<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Control Group: /user.slice/user-1000.slice/session-c2.scope<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Unit: session-c2.scope<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Slice: user-1000.slice<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Session: c2<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Owner UID: 1000 (wink)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Boot ID: 65910f0244bf4b62905c0198842b62d4<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Machine ID: 8f80fd742eae4659baed812cd07a9439<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Hostname: wink-desktop<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Storage:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">/var/lib/systemd/coredump/core.main.1000.65910f0244bf4b62905c0198842b62d4.23339.1530046303000000.lz4<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Message: Process 23339 (main) of user 1000 dumped core.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Stack trace of thread 23339:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> #0 0x0000000000382ef6 n/a<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">(/home/wink/prgs/explore-cpp/static-linking/main)<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> GNU gdb (GDB) 8.1<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Copyright (C) 2018 Free Software Foundation, Inc.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> License GPLv3+: GNU GPL version 3 or later <<a href="http://gnu.org/licenses/gpl.html">http://gnu.org/licenses/gpl.html</a>><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> This is free software: you are free to change and redistribute it.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> There is NO WARRANTY, to the extent permitted by law. Type "show copying"<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> and "show warranty" for details.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> This GDB was configured as "x86_64-pc-linux-gnu".<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Type "show configuration" for configuration details.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> For bug reporting instructions, please see:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> <<a href="http://www.gnu.org/software/gdb/bugs/">http://www.gnu.org/software/gdb/bugs/</a>>.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Find the GDB manual and other documentation resources online at:<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> <<a href="http://www.gnu.org/software/gdb/documentation/">http://www.gnu.org/software/gdb/documentation/</a>>.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> For help, type "help".<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Type "apropos word" to search for commands related to "word"...<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Reading symbols from<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">/home/wink/prgs/explore-cpp/static-linking/main...(no debugging<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">symbols found)...done.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> [New LWP 23339]<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Core was generated by `./main'.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> Program terminated with signal SIGSEGV, Segmentation fault.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> #0 0x0000000000382ef6 in _dl_get_origin ()<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> (gdb) bt<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> #0 0x0000000000382ef6 in _dl_get_origin ()<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> #1 0x000000000038255f in _dl_non_dynamic_init ()<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> #2 0x000000000037ef41 in __libc_init_first ()<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> #3 0x0000000000393d27 in __libc_start_main ()<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"> #4 0x000000000039368a in _start ()<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">[1]: <a href="https://github.com/winksaville/explore-cpp-static-linking">
https://github.com/winksaville/explore-cpp-static-linking</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">_______________________________________________<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in">cfe-dev mailing list<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><a href="mailto:cfe-dev@lists.llvm.org">cfe-dev@lists.llvm.org</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><a href="https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_cfe-2Ddev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=a-6d12kEoDpvHTe7FgHqZIzVFXeGNDaY1ojO68-yyUY&s=zXH4GyhwrDgHIBQQ88aviDyW6w65CWL5TQpvBEYKUpI&e=">https://urldefense.proofpoint.com/v2/url?u=http-3A__lists.llvm.org_cgi-2Dbin_mailman_listinfo_cfe-2Ddev&d=DwIGaQ&c=5VD0RTtNlTh3ycd41b3MUw&r=o3kDXzdBUE3ljQXKeTWOMw&m=a-6d12kEoDpvHTe7FgHqZIzVFXeGNDaY1ojO68-yyUY&s=zXH4GyhwrDgHIBQQ88aviDyW6w65CWL5TQpvBEYKUpI&e=</a><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-left:.5in"><o:p> </o:p></p>
</div>
</div>
</body>
</html>