انجمنهای فارسی اوبونتو
کمک و پشتیبانی => برنامهسازی => نویسنده: بهروز رمضانی در 28 اسفند 1392، 10:58 قظ
-
سلام
قصد دارم کتابخانه cs50 را به زوبونتو اضافه کنم . طبق این راهنما عمل کردم اما زمان کامپایل ارور زیر را میده .
https://manual.cs50.net/library/#_debian_ubuntu (https://manual.cs50.net/library/#_debian_ubuntu)
این متن برنامه و ارور آن
#include <cs50.h>
#include <stdio.h>
int main(void)
{
string name;
printf("Whats is your name?\n");
name = GetString();
printf("hello,%s\n",name);
}
behrooz@behrooz-Lenovo-G500:~/Documents/c++$ clang -o hello hello.c
/tmp/hello-lhP1sh.o: In function `main':
hello.c:(.text+0x22): undefined reference to `GetString'
clang: error: linker command failed with exit code 1 (use -v to see invocation)
-
سلام منم از Xubuntu 12.04 استفاده می کنم!
فکر کنم باید مسیر کتابخانه رو هم به کامپایلر بدید:
ahmad@ahmad-desktop:~/test$ cat hello.c
#include <cs50.h>
#include <stdio.h>
int main(void)
{
string name;
printf("Whats is your name?\n");
name = GetString();
printf("hello,%s\n",name);
return 0;
}
ahmad@ahmad-desktop:~/test$ gcc -O2 -o hello.out hello.c /usr/local/lib/libcs50.a
ahmad@ahmad-desktop:~/test$ ./hello.out
Whats is your name?
Ahmad
hello,Ahmad
تا حالا از clang استفاده نکردم اما احتمالا باید مثل gcc مسیر کتابخانه رو وارد کنید.
-
با دستور زیر میتونم سورس را کامپایل کنم .
clang -o hello hello.c -lcs50
اما جالب هست ، در فیلم آموزشی که گذاشتن دستور بالا بدونه سوئیچ اخری یعنی
-lcs50سورس را کامپایل میکنه و هر دو دستور هم یک خروجی را میده ، این تفاوت از کجا نشات میگیره ؟
-
این تفاوت از کجا نشات میگیره ؟
والا فکر می کنم که کامپایلر بصورت پیش فرض فقط کتابخانه استاندارد زبان سی رو جستجو می کنه.
و برای استفاده از بقیه کتابخانه ها باید نام کتابخانه رو به کامپایلر بدیم.
در مورد اینکه چطور توی فیلم بدون دادن نام کتابخانه، تونستن برنامه رو کامپایل کنن نظری ندارم!
اما میشه با نوشتن Makefile کار کامپایل رو فقط با یه دستور make انجامش داد.
این طوری نیاز نیست که هر دفعه دستور کامپایل رو بنویسیم.
-
اما میشه با نوشتن Makefile کار کامپایل رو فقط با یه دستور make انجامش داد.
چطور میتونم این کار را انجام بدم
-
چطور میتونم این کار را انجام بدم
موضوع توضیح مختصری درباره make (http://forum.ubuntu.ir/index.php/topic,65912) رو مطالعه کنید.
مطالعه موضوع توضیحات مختصری درباره کامپایلر و cflags (http://forum.ubuntu.ir/index.php/topic,65877) هم خالی از لطف نیست.