Because of the fact that pkg-config is pants-on-head retarded and that the Linux linker *requires* a static library to come before all its dynamic dependencies in the link path, calling `pkg-config --libs --static` was generating the wrong flags for linking. Before this patch: -Wl,-Bsymbolic-functions -Wl,-z,relro -L/usr/local/lib -lcurl -lssh2 -lrt -lgit2 -lssl -lcrypto -ldl -lz After this patch: -Wl,-Bsymbolic-functions -Wl,-z,relro -L/usr/local/lib -lgit2 -lcurl -lssh2 -lrt -lssl -lcrypto -ldl -lz By setting the "Libs" line before all other rules, we make sure that `-lgit2` is the first library in the link path and that it gets its symbols resolved with the libraries coming after it. This fix (ab)uses an implementation detail in `pkg-config` (namely, that flags are output as they are found on the file), but this detail seems to be stable between releases and always gives a stable output.
| Name |
Last commit
|
Last update |
|---|---|---|
| cmake/Modules | Loading commit data... | |
| deps | Loading commit data... | |
| docs | Loading commit data... | |
| examples | Loading commit data... | |
| include | Loading commit data... | |
| script | Loading commit data... | |
| src | Loading commit data... | |
| tests | Loading commit data... | |
| .HEADER | Loading commit data... | |
| .editorconfig | Loading commit data... | |
| .gitattributes | Loading commit data... | |
| .gitignore | Loading commit data... | |
| .mailmap | Loading commit data... | |
| .travis.yml | Loading commit data... | |
| AUTHORS | Loading commit data... | |
| CHANGELOG.md | Loading commit data... | |
| CMakeLists.txt | Loading commit data... | |
| CONTRIBUTING.md | Loading commit data... | |
| CONVENTIONS.md | Loading commit data... | |
| COPYING | Loading commit data... | |
| Makefile.embed | Loading commit data... | |
| PROJECTS.md | Loading commit data... | |
| README.md | Loading commit data... | |
| THREADING.md | Loading commit data... | |
| api.docurium | Loading commit data... | |
| appveyor.yml | Loading commit data... | |
| git.git-authors | Loading commit data... | |
| libgit2.pc.in | Loading commit data... | |
| libgit2_clar.supp | Loading commit data... |