A maioria dos pacotes no nixpkgs não tem bibliotecas estáticas por padrão. Você precisa adicionar glibc.static
para criar entradas para obter static -lc
, por exemplo.
Eu tenho a seguinte derivação Nix:
with import <nixpkgs> {};
stdenv.mkDerivation rec {
name = "scipoptsuite-${version}";
version = "4.0.0";
src = fetchurl {
url = "http://scip.zib.de/download/release/scipoptsuite-${version}.tgz";
sha256 = "087535760eae3d633e2515d942a9b22e1f16332c022be8d093372bdc68e8a661";
};
buildInputs = [ zlib gmp readline ];
}
Estranhamente, quando rodamos nix-build scipoptsuite.nix
, alguns arquivos estão compilando muito bem, mas eu entendo:
/nix/store/x9v0yxy5iybp2m2ccqwqkvxgjy7zrw8f-binutils-2.28/bin/ld: cannot find -lgmp
/nix/store/x9v0yxy5iybp2m2ccqwqkvxgjy7zrw8f-binutils-2.28/bin/ld: cannot find -lm
/nix/store/x9v0yxy5iybp2m2ccqwqkvxgjy7zrw8f-binutils-2.28/bin/ld: cannot find -lz
/nix/store/x9v0yxy5iybp2m2ccqwqkvxgjy7zrw8f-binutils-2.28/bin/ld: cannot find -lc
O mau comando é:
gcc -O3 -m64 -mtune=native obj/O.linux.x86_64.gnu.static.opt/zimpl.o obj/O.linux.x86_64.gnu.static.opt/xlpglue.o obj/O.linux.x86_64.gnu.static.opt/zlpglue.o obj/O.linux.x86_64.gnu.static.opt/ratlpstore.o obj/O.linux.x86_64.gnu.static.opt/ratlpfwrite.o obj/O.linux.x86_64.gnu.static.opt/ratmpswrite.o obj/O.linux.x86_64.gnu.static.opt/ratmstwrite.o obj/O.linux.x86_64.gnu.static.opt/ratordwrite.o obj/O.linux.x86_64.gnu.static.opt/ratpresolve.o -Llib -lzimpl-3.3.4.linux.x86_64.gnu.opt -lgmp -lm -lz -static -o bin/zimpl-3.3.4.linux.x86_64.gnu.static.opt
Alguém tem uma ideia de por que esse erro ocorre?
A maioria dos pacotes no nixpkgs não tem bibliotecas estáticas por padrão. Você precisa adicionar glibc.static
para criar entradas para obter static -lc
, por exemplo.