<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>