我真的很簡單的程序,檢查該用戶類型是迴文詞:(我知道,這個程序可以寫好多了,但讓我們離開那個放在一邊)
我必須使用readline函數來獲得用戶輸入或創建我自己的,但因爲我沒有足夠的知識來創建我自己的我正在使用readline。Ubuntu的的ReadLine()和生成文件
#include <stdio.h>
#include <stdlib.h>
#include <readline/readline.h>
#include <readline/history.h>
int IsPalindrome(char* niz)
{
int y=0;
int n=0;
int i;
for(i=1;i<strlen(niz)/2+1;i++)
{
if(niz[i-1]==niz[strlen(niz)-i]){
y++;
}
else{
n++;
}
}
if(n>0){
return 0;
}
else{
return 1;
}
}
int main()
{
char *inpt;
inpt = readline("enter text: ");
if(IsPalindrome(inpt)==1)
{
printf("\nIs palindrome\n");
}
else{
printf("\nNot palindrome\n");
}
return 0;
}
我使用的代碼::塊,如果我點擊「生成和運行」我得到以下錯誤:
未定義的引用「的ReadLine」
我必須編譯然後用makefile從終端運行我的程序,這是我迷路的地方。我最近剛開始使用Ubuntu,因此我對這件事以及它的工作原理並不十分了解。
現在我必須用makefile編譯我的程序(全部運行)。這是生成文件,我們可以使用(我在大學,我們拿到的這款爲幫助),我們只需要改變一些數據(名的程序,添加一些標誌):
GCC=gcc
CFLAGS=-c -g
LFLAGS=-lreadline
EXE=main
all: ${EXE}.o
${GCC} ${LFLAGS} ${EXE}.o -o ${EXE}
${EXE}.o: ${EXE}.c
${GCC} ${CFLAGS} ${EXE}.c
clean:
rm -rf *.o
rm -rf ${EXE}
現在因爲我正在使用readline函數,我添加了標誌-lreadline並將我的程序的名稱添加到EXE = main(我的程序被稱爲main.c),但是如果我運行makefile(make all),我得到以下錯誤:
make all
gcc -lreadline main.o -o main
main.o: In function `main':
/home/yack/Desktop/NPO/Palindrom/Palindrom/main.c:67: undefined reference to `readline'
collect2: error: ld returned 1 exit status
Makefile:7: recipe for target 'all' failed
make: *** [all] Error 1
我安裝的Readline-6.3和我讀在互聯網上,我必須以某種方式連接的readline告訴編譯器它或東西,但看起來增加-lreadline標誌是不夠的。
昨天我找到臨時的解決辦法,這樣,如果我的程序與此命令的工作我可以測試:
gcc main.c -L/usr/local/lib -I/usr/local/include -lreadline -c -g
使用此命令,我設法創建可執行文件和測試,如果我的程序工作,但今天甚至不再有效。
注:
我必須從makefile文件編譯程序,在終端中的最後一個命令只是爲了檢查我的程序工作,因爲我的makefile沒有工作。
我在做什麼錯?
請勿發佈圖片文字!改爲過去的文字。 – Olaf
@Olaf對不起,我認爲如果我發佈了什麼終端輸出的圖片,錯誤會更好理解。 – yack
什麼讓你將文本粘貼爲文本?對不起,這是一個蹩腳的藉口。 – Olaf