-
gcc为什末要加-lcurses, 而gcc -o test7 test7.c报错10
如题, 代码见下面
gcc -o test7 test7.c 报错如下:
$ make test7
cc test7.c -o test7
/tmp/cc2P6xHJ.o: In function `main':
test7.c.text+0x60): undefined reference to `initscr'
test7.c.text+0x65): undefined reference to `cbreak'
test7.c.text+0x6a): undefined reference to `noecho'
test7.c.text+0x6f): undefined reference to `stdscr'
test7.c.text+0x77): undefined reference to `wgetch'
test7.c.text+0x7f): undefined reference to `endwin'
collect2: ld returned 1 exit status
make: *** [test7] Error 1
下面则正常:
gcc -lcurses -o test7 test7.c
######################
代码如下
cat test7.c
#include <stdio.h>
#include <curses.h>
void aa(int x,float y) {
printf("%d--%f\n",x,y);
}
main() {
int a;
float b;
char ch;
scanf("%d%f",&a,&b);
aa(a,b);
initscr();
cbreak();
noecho();
ch = getch();
endwin();
printf("You input a :%c\n", ch);
}
#####################
还想问下:
1。怎样才能知道,什么时候用什末库呢?
2。libcurses.a与libcurses.so有什么区别呢?
3。下面简单例子在编译时为什么不用指定库呢?直接gcc -o test test.c
cat test.c
#include <stdio.h>
void p() {
printf("hello world!\n");
}
main() {
p();
}
2009年9月17日 16:18
1个答案 按时间排序 按投票排序
-
整个编译过程不是光把源码变成汇编,把汇编变成机器码,还要跟用到的库做链接。楼主大大仔细看,错误是在ld出现的,那个是链接器,不是编译器。
libcurses.a与libcurses.so的区别在前者是静态链接库,后者是动态链接库。与前者链接,会把前者里在你的程序中用到的内容(包括代码)都复制到链接后生成的文件中。与后者链接,在链接后生成的文件中只会保留符号链接。
<stdio.h>是C的标准库的头文件,它的路径在C编译器的默认include路径上;而对应的C运行时库文件也在默认的链接路径上。所以只用到C标准库函数时不需要额外指定-I或者-l。但用标准库之外的库时就要指定了。
第一个问题不清楚楼主大大想问的是什么,留给楼下的大大接力2009年9月18日 00:41
相关推荐
gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-guneabi.tar.xz gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-guneabi.tar.xz gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-guneabi.tar.xz gcc-linaro-4.9.4-2017.01-x86_...
gcc-4.8.5-39.el7.x86_64.rpm cpp-4.8.5-39.el7.x86_64.rpm gcc-c++-4.8.5-39.el7.x86_64.rpm gcc-gfortran-4.8.5-39.el7.x86_64.rpm libgcc-4.8.5-39.el7.x86_64.rpm libgfortran-4.8.5-39.el7.x86_64.rpm ...
标题 "lcursesgcc -o hello hello.c -lcurses" 是一个命令行指令,用于编译一个C语言程序,该程序使用了ncurses库。在这个标题中,我们可以解析出以下几个重要的知识点: 1. **C编译器GCC**:GCC(GNU Compiler ...
gcc-linaro-6.3.1-2017.05-x86_64_arm-linux-gnueabihf.tar.xz是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译32-bit Armv7 Cortex-A, hard-float, little-endian目标中的裸机程序、u-boot、Linux ...
gcc-4.8.5-44.el7.x86_64.rpm gcc-c++-4.8.5-44.el7.x86_64.rpm gcc-gfortran-4.8.5-44.el7.x86_64.rpm libgfortran-4.8.5-44.el7.x86_64.rpm libquadmath-4.8.5-44.el7.x86_64.rpm libquadmath-devel-4.8.5-44.el7....
gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz 工具,我这个免费下载,鄙视那些要币的人!下载后先解压rar,解压就就是gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf.tar.xz了! 我本来想...
gcc-linaro-4.9.4-2017.01-x86_64_arm-linux-gnueabihf 是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译32-bit Armv7 Cortex-A, hard-float, little-endian目标中的裸机程序、u-boot、Linux kernel...
gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.tar是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译64-bit Armv8 Cortex-A, little-endian目标中的裸机程序、u-boot、Linux kernel、...
gcc-linaro-7.4.1-2019.02-x86_64_aarch64-linux-gnu是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译64-bit Armv8 Cortex-A, little-endian hard-float, little-endian目标中的裸机程序、u-boot、...
gcc-linaro-7.5.0-2019.12-x86_64_arm-linux-gnueabihf.tar.tar是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译32-bit Armv7 Cortex-A, hard-float, little-endian目标中的裸机程序、u-boot、Linux...
标题中的“gcc-linaro-6.3.1-2017.05-x86_64_aarch64-linux-gnu.tar.gz”指的是一款由Linaro组织提供的GCC(GNU Compiler Collection)交叉编译器,版本号为6.3.1,发布于2017年5月。这个版本是针对x86_64架构的主机...
gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu.tar.tar是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译64-bit Armv8 Cortex-A, little-endian目标中的裸机程序、u-boot、Linux kernel、...
gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译32-bit Armv7 Cortex-A, hard-float, little-endian目标中的裸机程序、u-boot、Linux kernel...
标题中的“gcc-linaro-6.3.1-2017.05-x86-64-aarch64-linux-gnu.7z”是一个GCC(GNU Compiler Collection)的特定版本,由Linaro组织提供。Linaro是一个开源软件工程组织,专注于优化和维护开源软件在ARM架构上的...
gcc-linaro-7.3.1-2018.05-x86-64-aarch64-linux-gnu.tar
gcc-linaro-6.2.1-2016.11-x86_64_arm-linux-gnueabihf是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译32-bit Armv7 Cortex-A, hard-float, little-endian目标中的裸机程序、u-boot、Linux kernel...
gcc-linaro-7.4.1-2019.02-x86_64_arm-linux-gnueabihf是由 Linaro 公司基于GCC推出的的ARM交叉编译工具。可用于交叉编译32-bit Armv7 Cortex-A, hard-float, little-endian目标中的裸机程序、u-boot、Linux kernel...
1. **GCC 编译器**:负责将源代码(如C或C++)转换为可执行的目标代码。对于ARM Cortex-M,它会生成适合该架构的机器码。 2. **GDB 调试器**:调试工具,允许开发者在目标硬件上或模拟器中运行程序,并进行单步执行...