프로그램을 컴파일 하려고 합니다Lee의 기준 테스트하기우분투에서. 그러나 이 작업을 수행하면 gcc demo.c
내가 얻는 결과는 다음과 같습니다.
demo.c:2:19: fatal error: fmpcb.h: No such file or directory
#include "fmpcb.h"
^
compilation terminated.
이 프로그램을 어떻게 컴파일할 수 있나요? 컴파일 작업을 수행하려면 bash 스크립트가 필요하다고 생각합니다.
답변1
최신 버전의 Arb에는 fmpcb.h 파일이 더 이상 존재하지 않습니다. Arb 1.x의 fmprb_t 및 fmpcb_t 유형은 Arb 2.x의 (보다 효율적인) arb_t 및 acb_t 유형으로 대체되었습니다. 최신 버전에서는 이전 fmpcb_t 유형이 완전히 제거되었습니다.
fmprb -> arb 및 fmpcb -> acb를 교체하고 기타 사소한 조정을 수행하여 해당 블로그 게시물에서 코드를 얻을 수 있습니다.
그러나 더 나은 솔루션은 Arb에 포함된 Keiper-Li 샘플 프로그램을 사용하는 것입니다.
https://github.com/fredrik-johansson/arb/blob/master/examples/keiper_li.c
이것은 기본적으로 블로그 게시물에 있는 프로그램의 더 나은 버전입니다. 더 빠르고, 멀티스레딩을 지원하고, 다시 컴파일하는 대신 명령줄에서 인수를 전달할 수 있으며, 현재 인터페이스와 동기화를 유지해야 합니다.
Arb 소스 디렉터리에서 다음과 같이 샘플 프로그램을 빌드하고 실행할 수 있습니다(Arb가 설치되어 있다고 가정).
cd /home/user/src/arb
make examples
build/examples/keiper_li 100
또한 링커에게 소스 디렉터리에서 libarb.so를 찾을 수 있다고 알려 Arb를 설치하지 않고도 라이브러리를 빌드하고 예제 프로그램을 실행할 수 있습니다.
cd /home/user/src/arb
make
export LD_LIBRARY_PATH=/home/user/src/arb:$LD_LIBRARY_PATH
make examples
build/examples/keiper_li 100
Arb 샘플 프로그램에 대한 설명서는 다음을 참조하세요.http://fredrikj.net/arb/examples.html
답변2
fmpcb.h
C 포함 경로에서 파일을 찾을 수 없습니다. 와는 별개로,여기서 괄호 대신 따옴표를 사용하는 것도 좋지 않은 생각일 수 있습니다.. 당신이 빌드하려는 이 테스트는 아마도 컴파일될 것입니다.~을 따라Arb 라이브러리와 함께 사용했기 때문에 저자는 따옴표를 사용했습니다.
먼저 이 헤더를 제공하는 패키지(및 관련 라이브러리가 있는 경우)를 설치합니다. 이 파일은 Arb 라이브러리에서 제공되는 것 같습니다.여기에서 다운로드(ZIP 다운로드). 아카이브를 다운로드하고 압축을 푼 후 해당 디렉터리를 입력하고 다음을 입력합니다.
$ ./configure
$ make
$ sudo make install
이 configure
스크립트는 시스템에서 검사를 실행하여 빌드 중인 라이브러리를 컴파일하고 링크할 수 있는지 확인합니다. 이것이 실패하면 계속하기 전에 필요한 모든 종속성을 설치해야 합니다. 일부 종속성은 바이너리 패키지로 제공될 수 있으며(배포판 문서 참조) 일부는 그렇지 않을 수 있습니다(이 경우 해당 설명, 일반적으로 라이브러리 아카이브의 추가 정보 또는 설치 파일을 읽어야 합니다). Arb의 Git 페이지에 따르면 몇 가지 설치를 수행해야 합니다.
Arb는 FLINT(http://flintlib.org/), MPIR(http://mpir.org) 및 MPFR(http://mpfr.org). 독립 실행형 라이브러리로 구축하거나 선택적 확장 팩으로 FLINT의 일부로 구축할 수 있습니다.
참고 사항:내 Ubuntu 시스템은 libflint(libflint-dev) 및 MPFR(libmpfr-dev)용 바이너리 패키지를 제공합니다. 다음 명령을 사용하여 설치할 수 있습니다.
$ sudo apt-get install libflint-dev libmpfr-dev
(패키지 관리자가 인 경우 apt-get
). MPIR은여기서 다운로드하세요, 다른 일반 설치를 사용하십시오 ./configure && make && sudo make install
. ~에 따르면MPIR 문서, 라이브러리를 컴파일하기 전에 종속성을 설치할 필요가 없습니다. 전체적으로 :
- 를 설치하여
libflint-dev
사용libmpfr-dev
하거나apt-get
해당 종속성(있는 경우)과 함께 직접 컴파일하십시오. - MPIR 라이브러리를 다운로드하고 컴파일한 다음(README 파일 또는 위에 링크한 PDF 문서 참조) 설치합니다.
- Arb 라이브러리를 다운로드하고 컴파일하고 설치합니다.
Arb 라이브러리가 시스템에 구축되어 설치되면 해당 fmpcb.h
파일은 다음 위치에서 찾을 수 있습니다 /usr/local/include/fmpcb.h
(배포판이 다른 경로를 사용하지 않는 한). 에서 라이브러리 파일을 찾을 수도 있습니다 /usr/local/lib
. 헤더 파일은 시스템 디렉터리(C 포함 경로)에 있으므로 코드에 따옴표 대신 괄호를 사용해야 합니다.
#include <fmpcb.h>
이제 새로 설치된 라이브러리를 컴파일하고 링크하려면 컴파일러에게 다음을 수행하도록 지시해야 합니다.
$ gcc -I/usr/local/include -L/usr/local/lib -larb yourprogram.c -o yourprogram
$ ./yourprogram
Arb 설치 방법에 대한 자세한 내용은 다음을 확인하세요.이 페이지. Arb를 Flint 확장으로 설치하는 방법에 대한 정보와 이 특정 사례에 대한 컴파일 지침도 찾을 수 있습니다.