编译a文件
A. java先编译一个文件A,然后再编译一个文件B读取文件A
我英语不太好,但上面B程序只要你用一圈星号把Carly的标语装饰一下,不要你用B去调用A啊,
B读取文件A的内容想实现用反射也挺简单的
B. 编译minix操作系统时,总有提示没有找到后缀名为.a的文件,.a文件是什么文件怎么生成
.a文件是.o文件的集合,可用ar -tv命令查看里面包含的.o文件。
ADS编译选项小技巧
2005-12-01 12:50
今天收到了中文之星发来的输入法文件,发现生成的库文件是.a后缀的,因为习惯使用.lib形式的后缀,又担心直接修改后缀名称会出问题,所以想研究一下怎么把.a修改成.lib文件。
命令行模式下输入armar查询参数,发现了几个比较需要的参数:
-x Extract members in <file_list> placing in files of the same name.
-t Print table of contents of archive.
-create Force creation of a new archive.
于是,输入armar -t csk2.a查看了库文件的组成文件列表,然后输入armar -x csk2.a解压出全部.o文件,最后armar -create csk2.lib *.o,成功生成csk2.lib。比较csk2.a和csk2.lib发现有一个数字不一样,估计是生成时间不一样,现在想想或许直接改后缀就可以了。虽然走了弯路,但是通过查询编译参数还发现了不少好用的功能,这里就不列举了附上参数表,自己慢慢研究。
-r Insert files in <file_list>, replace existing members of the same name.
-d Delete the members in <file_list>.
-x Extract members in <file_list> placing in files of the same name.
-m Move files in <file_list>.
-p Print files to stdout.
-a pos Insert/move files after file named <pos>.
-b pos Insert/move files before file named <pos>.
-u Update older files only, used with -r.
-n Do not add a symbol table to an object archive.
-s Force regeneration of archive symbol table.
-t Print table of contents of archive.
-zs Show the symbol table.
-zt Summarize the archive contents (sizes + entries).
-c Suppress warning when a new archive is created.
-C Do not overwrite existing files when extracting.
-T Truncate file names to system maximum length.
-v Give verbose output.
-create Force creation of a new archive.
-via file Take additional arguments from via file.
-sizes List the size of each member and the library total.
-entries List sections containing ENTRY points.
-vsn Print the current Armar Version.
-help Print this message.
Examples:-
armar -r mylib.a obj1 obj2 obj3...
armar -x mylib.a ?sort*
armar -d mylib.a hash.o
armar -tv ansilib.a
C. 编译时怎么使用.a文件
编译时怎么使用.a文件
for example:(1)动态库的编译
这里有一个头文件:so_test.h,三个.c文件:test_a.c、test_b.c、test_c.c,我们将这几个文件编译成一个动态库:libtest.so。
命令:$ gcc test_a.c test_b.c test_c.c -fPIC -shared -o libtest.so
D. 怎么编译MT7620A程序包
其实解决方案很简单,既然编译器不能根据包名找到A类,那我们就把A类的绝对路径直接告诉编译器不就可以了吗?事实上就是这么做的,具体操作为:在命令行模式下进入F:\test目录,然后运行编译命令javacF:\test\e\main\A.java,可以成功编译生成A.class文件。(注意:如果不在此目录下执行编译命令的话,就要将f:\test加入到当前的classpath中为make工具提供B.java的位置信息)接下来就要运行这个class文件了,运行仍然在F:\test目录下执行(注意:如果不在此目录下执行运行命令的话,一定要把F:\test加入到当前的classpath中),命令为:javae.main.A,很显然,这里就是根据输入的package名称找到对应的class文件,并检验找到的class文件的与输入的包名是否匹配(例如:如果你在e目录下新建一个test目录,将A.class文件拷贝进去,输入javae.test.A的话还是会报错:找不到class文件)。可能有人要问:为什么运行的时候又可以根据包名找到相应的class文件呢?因为运行的时候默认是从当前路径开始搜索的,如果当前路径找不到的话,就在系统的classpath中找,如果再找不到就会报错。由上面的分析我们可以得出:(1)在命令行模式下编译java文件时,如果cmd不在该java文件所在的目录下,就要直接指定文件的绝对路径(javacF:\test\e\main\A.java),如果在java文件所在的目录下,可以不指定路径,但是要设置classpath让编译器的make工具找到其他import的类(2)运行的时候要指出包路径(javae.main.A),并且一定要在class文件名前带上完整的包名(e.main.A),而且该包所在的文件夹(即e所在的文件夹)一定要在classpath中,这样才能找到对应的class文件(在包所在的文件夹目录下运行cmd程序或者将该目录加入到classpath中均可)。(3)在命令行模式下非直接编译的java,编译器使用make工具根据java文件中的import信息间接找到引用的java文件,所以一定要注意文件的配置,以及相互之间的位置关系。当然也可以通过设置classpath提供给make工具,但是如果文件比较多而且相互之间的引用关系比较复杂的话会比较麻烦。(4)classpath只能供make工具以及运行class文件时使用,在直接编译的时候不使用classpath信息,必须在要编译的java文件前带上其绝对的路径名。
E. 如何在XCode中使用gcc编译生成的.a库文件
1. 把你的.a文件添加到^projectName下的任意一个组里(例如默认的Classes组)。
2. 找到Target > ^targetName,在这个^targetName下会有Link Binary With Libraries。把你已经在某组里的那个.a文件拖到Link Binary With Libraries这个Build Phase中。(也可能同时也要添加到某个Copy的Build Phase中...)
3. 提供一个可用的头文件。
4. Build and Go.
封装的话,标准的Cocoa做法是用Cocoa Framework。也就是在新建工程的时候,选择Cocoa Framework。
F. .a文件.o文件和.so文件有什么区别
o: 编译的目标文件 a: 静态库,其实就是把若干o文件打了个包 so: 动态链接库(共享库) lo: 使用libtool编译出的目标文件,其实就是在o文件中添加了一些信息 la: 使用libtool编译出的库文件,其实是个文本文件,记录同名动态库和静态库的相关信息。
我们通常把一些公用函数制作成函数库,供其它程序使用,函数库分为静态库和动态库两种,静态库在程序编译时会被连接到目标代码中,程序运行时将不再需要该静态库,动态库在程序编译时并不会被连接到目标代码中,而是在程序运行是才被载入,因此在程序运行时还需要动态库存在,在创建函数库前,我们先来准备举例用的源程序,并将函数库的源程序编译成.o文件。
G. Android编译出.a文件有什么用,为什么不直接编译成.so
.a是静态链接库啊。
H. .a文件是什么VC6.0编译出现错误,怎么在编译的时候把.a文件也加进去
.a文件是GCC编译器用的,VC编译器无法使用。
你要换GCC编译器的话集成开发环境也不能用VC,要换。
Windows下也是可以用GCC的,不过你要确定你拿到的.a不是Linux下生成的
然后这里面名堂就多了我一下子也讲不清于是只能让你自己慢慢去找这方面的资料了。
I. a 是什么文件如何使用 a文件
.a文件是编译过程中生成的,每个package都会生成对应的.a文件,Go在编译的时候先判断package的源码是否有改动,如果没有的话,就不再重新编译.a文件,这样可以加快速度。
J. a的用gcc编译
1、用gcc的-c选项生成.o文件
如 gcc -c test1.c test2.c test3.c 编译后会生成test1.o test2.o test3.o三个目标文件。
2、然后用ar命令生成.a文件
如 ar cr libtest.a test1.o test2.o test3.o