2016-09-16 6 views
1

初めてncursesを試してみたいと思いますが、ソースコードのコンパイルに問題があります。私が知る限り、ncursesは適切なディレクトリにインストールされています。g ++はインストールされていてもncurses.hを見つけることができません

私のメイクは超簡単です:私はlocate ncurses.h

$ locate ncurses.h 
/usr/include/ncursesw/ncurses.h 

と私はそれが

$ dpkg -l | grep ncurses 
ii libncurses5:amd64          5.9+20140118-1ubuntu1        amd64  shared libraries for terminal handling 
ii libncursesw5:amd64         5.9+20140118-1ubuntu1        amd64  shared libraries for terminal handling (wide character support) 
ii libncursesw5-dev:amd64        5.9+20140118-1ubuntu1        amd64  developer's libraries for ncursesw 
ii mtr-tiny            0.85-2            amd64  Full screen ncurses traceroute tool 
ii ncurses-base           5.9+20140118-1ubuntu1        all   basic terminal type definitions 
ii ncurses-bin           5.9+20140118-1ubuntu1        amd64  terminal-related programs and man pages 
ii ncurses-term           5.9+20140118-1ubuntu1        all   additional terminal type definitions 

をインストールしていますかどうかを確認しようとすると、

.cpp : 
    g++ -Wall -g -o $* $*.cpp -std=c++11 -lncurses 

、ここでは私の出力だがg ++はこれを私に伝えます。

bankacct.cpp:18:29: fatal error: ncurses.h: No such file or directory 
compilation terminated. 

残念ながら、私はrootアクセス権がありません。このマシンでコンパイルできる必要があります。私の選択肢は何ですか?

$ make bankacct 
g++ -Wall -g -o bankacct bankacct.cpp -std=c++11 -lncurses 
/usr/bin/ld: cannot find -lncurses 

と私は-lncursesを削除しようとした場合、それは私にこの与える::

を私は他のユーザーからの提案に基づいていますが、今のG ++は私にこのエラーを与えている <ncursesw/ncurses.h>含めて試してみた


$ make bankacct 
g++ -Wall -g -o bankacct bankacct.cpp -std=c++11 
/tmp/cc8rPQfK.o: In function `main': 
bankacct.cpp:23: undefined reference to `initscr' 

今、私はライブラリをリンクしようとしました。ここに私がやったことだ:

g++ -Wall -g -L/usr/lib/x86_64-linux-gnu/ -o $* $*.cpp -std=c++11 -lncurses 

g++ -Wall -g -L/lib/x86_64-linux-gnu/ -o $* $*.cpp -std=c++11 -lncurses 

まだ私に(-lncursesなし)エラーをundefined reference to 'initscr'与えたか/usr/bin/ld: cannot find -lncurses

$ locate libncurse 
/lib/x86_64-linux-gnu/libncurses.so.5 
/lib/x86_64-linux-gnu/libncurses.so.5.9 
/lib/x86_64-linux-gnu/libncursesw.so.5 
/lib/x86_64-linux-gnu/libncursesw.so.5.9 
/usr/lib/x86_64-linux-gnu/libncurses++w.a 
/usr/lib/x86_64-linux-gnu/libncursesw.a 
/usr/lib/x86_64-linux-gnu/libncursesw.so 
/usr/share/doc/libncurses5 
/usr/share/doc/libncursesw5 
/usr/share/doc/libncursesw5-dev 
/var/lib/dpkg/info/libncurses5:amd64.list 
/var/lib/dpkg/info/libncurses5:amd64.md5sums 
/var/lib/dpkg/info/libncurses5:amd64.postinst 
/var/lib/dpkg/info/libncurses5:amd64.postrm 
/var/lib/dpkg/info/libncurses5:amd64.shlibs 
/var/lib/dpkg/info/libncurses5:amd64.symbols 
/var/lib/dpkg/info/libncursesw5-dev:amd64.list 
/var/lib/dpkg/info/libncursesw5-dev:amd64.md5sums 
/var/lib/dpkg/info/libncursesw5-dev:amd64.postinst 
/var/lib/dpkg/info/libncursesw5:amd64.list 
/var/lib/dpkg/info/libncursesw5:amd64.md5sums 
/var/lib/dpkg/info/libncursesw5:amd64.postinst 
/var/lib/dpkg/info/libncursesw5:amd64.postrm 
/var/lib/dpkg/info/libncursesw5:amd64.shlibs 
/var/lib/dpkg/info/libncursesw5:amd64.symbols 

それでは、私は私のメイクの2つのバリエーションを試してみました(それあり)

+1

を追加することができます<ncursesw/ncurses.h>を指定するには、ソースコードを変更する必要はありません

-lncursesw 

が必要ソースコードに '#include 'のようなヘッダーを含めていますか? –

+0

私は '#include 'と '#include 'の両方を試しました。そして、g ++は 'ncurses.h:No such file or directory'を教えてくれました。私のプログラム全体は本質的に '#include ' –

+1

で、 '/ usr/include/ncursesw /'の隣に何がありますか? – Flint

答えて

2
-lncurses 

は、 "ncurses"というライブラリを探すようリンカに指示します。あなたは明らかにそれはあなたのライブラリーが呼ばれているものではありません示しています

/usr/lib/x86_64-linux-gnu/libncursesw.a 

あなたはあなたが単に

-I/usr/include/ncursesw 
関連する問題