当前位置: 技术问答>linux和unix
很怪异的编译问题
来源: 互联网 发布时间:2016-02-29
本文导语: 我有一个getmaxlen.c和getmaxlen.h文件,有一个测试输出的文件test.c,代码如下 ----getmaxlen.c------ #include "stdio.h" #include "getmaxlen.h" void getMaxLen(const char *name) { printf("Hello %srn",name); } -------getmaxlen.h-------- #ifndef _GET...
我有一个getmaxlen.c和getmaxlen.h文件,有一个测试输出的文件test.c,代码如下
----getmaxlen.c------
#include "stdio.h"
#include "getmaxlen.h"
void getMaxLen(const char *name)
{
printf("Hello %srn",name);
}
-------getmaxlen.h--------
#ifndef _GETMAXLEN_H_
#define _GETMAXLEN_H_
void getMaxLen(const char *name);
#endif
---------test.c----------
#include
#include
#include "getmaxlen.h"
int main()
{
getMaxLen("everyone");
return 0;
}
我先用gcc编译,将getmaxlenc.c编译成静态库让test.c调用,编译的命令如下
gcc -c getmaxlen.c
ar cr libTestMaxlen getmaxlen.o
gcc -o hello test.c -L. -lTestMaxlen
生成了一个hello文件,运行hello文件输出hello everyone,现实结果正确
现在我想把上面的程序编译成二进制文件,放到嵌入式下运行
编译的过程如下
arm-uclibc-linux-gcc -c getmaxlen.c
ar cr libTestMaxlen getmaxlen.o
arm-uclibc-linux-gcc -o hello test.c -L. -lTestMaxlen
运行第三个命令的时候,会报下面的一个错误:
/opt/hisilicon/toolchains/arm-uclibc-linux-soft/bin/arm-uclibc-linux-ld: line 1: syntax error near unexpected token `newline'
/opt/hisilicon/toolchains/arm-uclibc-linux-soft/bin/arm-uclibc-linux-ld: line 1: `!'
collect2: ld returned 2 exit status
首先考虑可能是换行的因素,但是实验证明和这个无关,请教相关的大侠,帮看看这是什么原因
----getmaxlen.c------
#include "stdio.h"
#include "getmaxlen.h"
void getMaxLen(const char *name)
{
printf("Hello %srn",name);
}
-------getmaxlen.h--------
#ifndef _GETMAXLEN_H_
#define _GETMAXLEN_H_
void getMaxLen(const char *name);
#endif
---------test.c----------
#include
#include
#include "getmaxlen.h"
int main()
{
getMaxLen("everyone");
return 0;
}
我先用gcc编译,将getmaxlenc.c编译成静态库让test.c调用,编译的命令如下
gcc -c getmaxlen.c
ar cr libTestMaxlen getmaxlen.o
gcc -o hello test.c -L. -lTestMaxlen
生成了一个hello文件,运行hello文件输出hello everyone,现实结果正确
现在我想把上面的程序编译成二进制文件,放到嵌入式下运行
编译的过程如下
arm-uclibc-linux-gcc -c getmaxlen.c
ar cr libTestMaxlen getmaxlen.o
arm-uclibc-linux-gcc -o hello test.c -L. -lTestMaxlen
运行第三个命令的时候,会报下面的一个错误:
/opt/hisilicon/toolchains/arm-uclibc-linux-soft/bin/arm-uclibc-linux-ld: line 1: syntax error near unexpected token `newline'
/opt/hisilicon/toolchains/arm-uclibc-linux-soft/bin/arm-uclibc-linux-ld: line 1: `!'
collect2: ld returned 2 exit status
首先考虑可能是换行的因素,但是实验证明和这个无关,请教相关的大侠,帮看看这是什么原因
|
请问,你用arm-uclibc-linux-gcc -c getmaxlen.c
ar cr libTestMaxlen getmaxlen.o
arm-uclibc-linux-gcc -o hello test.c -L. -lTestMaxlen
编译好了后,你在那里运行 ./hello.
如果在pc上是肯定不行的,编译环境不一样,肯定是不能运行的,你有在你的嵌入式板子上运行吗?
ar cr libTestMaxlen getmaxlen.o
arm-uclibc-linux-gcc -o hello test.c -L. -lTestMaxlen
编译好了后,你在那里运行 ./hello.
如果在pc上是肯定不行的,编译环境不一样,肯定是不能运行的,你有在你的嵌入式板子上运行吗?
|
gcc -c getmaxlen.c
ar cr libTestMaxlen getmaxlen.o
gcc -o hello test.c -L. -lTestMaxlen
生成了一个hello文件,运行hello文件输出hello everyone,现实结果正确
现在我想把上面的程序编译成二进制文件,放到嵌入式下运行
编译的过程如下
arm-uclibc-linux-gcc -c getmaxlen.c
ar cr libTestMaxlen getmaxlen.o
arm-uclibc-linux-gcc -o hello test.c -L. -lTestMaxlen
两次编译之间你删除TestMaxlen 了没有?
ar cr libTestMaxlen getmaxlen.o
gcc -o hello test.c -L. -lTestMaxlen
生成了一个hello文件,运行hello文件输出hello everyone,现实结果正确
现在我想把上面的程序编译成二进制文件,放到嵌入式下运行
编译的过程如下
arm-uclibc-linux-gcc -c getmaxlen.c
ar cr libTestMaxlen getmaxlen.o
arm-uclibc-linux-gcc -o hello test.c -L. -lTestMaxlen
两次编译之间你删除TestMaxlen 了没有?
|
试试 ar crs libTestMaxlen getmaxlen.o