Ⅰ 编译报错
ile”或者“Build”后被出现的
“Compiling... ,Error spawning cl.exe”错误提示给郁闷过。很多人的
选择是重装,实际上这个问题很多情况下是由于路径设置的问题引起的,
“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,
你可以到相应的路径下找到这个应用程序。
因此问题可以按照以下方法解决:
方法一:
打开vc界面 点击VC“TOOLS(工具)”—>“Option(选择)”
—>“Directories(目录)”重新设置“Excutable Fils、Include Files、
Library Files、Source Files”的路径。很多情况可能就一个盘符的不同
(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。
如果你是按照初始路径安装vc6.0的,路径应为:
executatble files:
C:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin
C:\Program Files\Microsoft Visual Studio\VC98\BIN
C:\Program Files\Microsoft Visual Studio\Common\TOOLS
C:\Program Files\Microsoft Visual Studio\Common\TOOLS\WINNT
include files:
C:\Program Files\Microsoft Visual Studio\VC98\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
library files:
C:\Program Files\Microsoft Visual Studio\VC98\LIB
C:\Program Files\Microsoft Visual Studio\VC98\MFC\LIB
source files:
C:\Program Files\Microsoft Visual Studio\VC98\MFC\SRC
C:\Program Files\Microsoft Visual Studio\VC98\MFC\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\ATL\INCLUDE
C:\Program Files\Microsoft Visual Studio\VC98\CRT\SRC
如果你装在其他盘里,则仿照其路径变通就行(我就是装在D盘)。
关键是microsoft visual studio\ 后面的东西要相同。 主义大小写。
方法二:(这种较简单)
最简便的方法: 启动VC时不要用图形界面,通过在命令提示符下输入:Msdev /useenv运行(注意啦/前面有个空格).它会强制使系统环境变量全高设置成正确值.而且,只需要使用一次这样的方式运行VC,以后再次通过双击图标的方式启动也不会有问题.
复制的
Ⅱ 我安装的visual studio2012 和2010编译的时候都报错(详细请见问题补充)
你的工程设置有问题。你的工程肯定设置成win32应用程序了,所以会去连接WinMain函数。
解决办法:重新建一个工程,选C++控制台程序。
Ⅲ Linux下 gcc编译提示错误,,在函数_start中 main 未定义的引用
你是不是在编译静态库或者动态库?也就是没有main函数。如果是,再参考一下下边的提示。
-c 参数表示将源文件编译成object(目标文件)。 即 gcc -c foo.c 会编译成 foo.o
gcc 不加参数时会编译且尝试链接成可执行文件,然而 foo.c 的代码中没有main函数的定义,所以最终无法成功链接,故报错。
Ⅳ 如何解决在交叉编译的问题的crt0.o
如何添加ctr0.o?我得到这个错误:
yagarto-4.7.2/bin/arm-none-eabi-ld: cannot find crt0.o: No such file or directory
collect2: error: ld returned 1 exit status`
离这里很简单的程序:
/* -- first.s */
/* This is a comment */
.global main /* 'main' is our entry point and must be global */
.func main /* 'main' is a function */
main: /* This is main */
mov r0, #2 /* Put a 2 inside the register r0 */
bx lr /* Return from main */
我看这2个线程,并没有得到任何完整的和直截了当的回答: 什么是从背后取下gcc4.7.x的crt0.o的理由? 我有这些文件,什么是CRT0和外箱之间的区别不就可以了?
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/crtbegin.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/crtend.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/crti.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/crtn.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/crtbegin.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/crtend.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/crti.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/crtn.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/v6m/crtbegin.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/v6m/crtend.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/v6m/crti.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/v6m/crtn.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/v7m/crtbegin.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/v7m/crtend.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/v7m/crti.o
./yagarto-4.7.2/lib/gcc/arm-none-eabi/4.7.2/thumb/v7m/crtn.o
在SO解决方案给周围的工作不工作了:
arm-none-eabi-gcc -o first assembler_tutorial/chapter01/first.o -nostartfiles
./yagarto-4.7.2/bin/arm-none-eabi-ld: warning: cannot find entry symbol _start; defaulting to 0000000000008000
本文地址 :CodeGo.net/603832/
-------------------------------------------------------------------------------------------------------------------------
1. vectors.s
.globl _start
_start:
mov sp,#0x8000
bl main
hang: b hang
main.s
.globl main
main:
mov r0,#2
bx lr
MEMMAP(链接脚本)
MEMORY
{
ram : ORIGIN = 0x8000, LENGTH = 0x10000
}
SECTIONS
{
.text : { *(.text*) } > ram
.bss : { *(.bss*) } > ram
}
命令
arm-none-eabi-as vectors.s -o vectors.o
arm-none-eabi-as main.s -o main.o
arm-none-eabi-ld vectors.o main.o -T memmap -o main.elf
arm-none-eabi-objmp -D main.elf > main.list
arm-none-eabi-obj main.elf -O binary main.bin
结果
main.elf: file format elf32-littlearm
Disassembly of section .text:
00008000 <_start>:
8000: e3a0d902 mov sp, #32768 ; 0x8000
8004: eb000000 bl 800c <main>
00008008 <hang>:
8008: eafffffe b 8008 <hang>
0000800c <main>:
800c: e3a00002 mov r0, #2
8010: e12fff1e bx lr
如果你想,而不是ASM主C,则 main.c中
int main ( void )
{
return(2);
}
命令
arm-none-eabi-as vectors.s -o vectors.o
arm-none-eabi-gcc -Wall -Werror -O2 -nostdlib -nostartfiles -ffreestanding -c main.c -o main.o
arm-none-eabi-ld vectors.o main.o -T memmap -o main.elf
arm-none-eabi-objmp -D main.elf > main.list
arm-none-eabi-obj main.elf -O binary main.bin
结果
main.elf: file format elf32-littlearm
Disassembly of section .text:
00008000 <_start>:
8000: e3a0d902 mov sp, #32768 ; 0x8000
8004: eb000000 bl 800c <main>
00008008 <hang>:
8008: eafffffe b 8008 <hang>
0000800c <main>:
800c: e3a00002 mov r0, #2
8010: e12fff1e bx lr
我更喜欢其他的函数不是主要的编译器添加额外的行李,当他们看到那个函数 vectors.s
.globl _start
_start:
mov sp,#0x8000
bl notmain
hang: b hang
main.c中
int notmain ( void )
{
return(2);
}
结果
main.elf: file format elf32-littlearm
Disassembly of section .text:
00008000 <_start>:
8000: e3a0d902 mov sp, #32768 ; 0x8000
8004: eb000000 bl 800c <notmain>
00008008 <hang>:
8008: eafffffe b 8008 <hang>
0000800c <notmain>:
800c: e3a00002 mov r0, #2
8010: e12fff1e bx lr
使用命令 which jar
看结果是不是在你安装的路径下,如下:
/home/apuser/opt/jdk1.6.0_30/bin/jar
如果没有,或者它在别的目录下,使用sudo update-alternatives --config jar
如果是通过手动安装java的你只要将JAVA_HOME 配置好
同时将$JAVA _HOME/bin 添加到PATH路径下。
希望对你有帮助
Ⅵ Linux下C++编译报错 在函数'_start'中: (.text+0x20):对'main'未定义的引用
看上去似乎是编译器没装好?
可以先测试一下gcc,编译运行helloworld.c。然后再看g++编译cpp。
Ⅶ 为什么我的C++在编译时总是报错呢,说c1.exe无法运行.错误看图片
实际上这个问题很多情况下是由于路径设置的问题引起的,
“CL.exe”是VC使用真正的编译器(编译程序),其路径在“VC根目录\VC98\Bin”下面,
你可以到相应的路径下找到这个应用程序。
因此问题可以按照以下方法解决:打开vc界面
点击VC“TOOLS(工具)”—>“Option(选择)”
—>“Directories(目录)”重新设置“Excutable
Fils、Include
Files、
Library
Files、Source
Files”的路径。很多情况可能就一个盘符的不同
(例如你的VC装在C,但是这些路径全部在D),改过来就OK了。
如果你是按照初始路径安装vc6.0的,路径应为:
executatble
files:
C:\Program
Files\Microsoft
Visual
Studio\Common\MSDev98\Bin
C:\Program
Files\Microsoft
Visual
Studio\VC98\BIN
C:\Program
Files\Microsoft
Visual
Studio\Common\TOOLS
C:\Program
Files\Microsoft
Visual
Studio\Common\TOOLS\WINNT
include
files:
C:\Program
Files\Microsoft
Visual
Studio\VC98\INCLUDE
C:\Program
Files\Microsoft
Visual
Studio\VC98\MFC\INCLUDE
C:\Program
Files\Microsoft
Visual
Studio\VC98\ATL\INCLUDE
library
files:
C:\Program
Files\Microsoft
Visual
Studio\VC98\LIB
C:\Program
Files\Microsoft
Visual
Studio\VC98\MFC\LIB
source
files:
C:\Program
Files\Microsoft
Visual
Studio\VC98\MFC\SRC
C:\Program
Files\Microsoft
Visual
Studio\VC98\MFC\INCLUDE
C:\Program
Files\Microsoft
Visual
Studio\VC98\ATL\INCLUDE
C:\Program
Files\Microsoft
Visual
Studio\VC98\CRT\SRC
如果你装在其他盘里,则仿照其路径变通就行。
关键是microsoft
visual
studio\
后面的东西要相同。
Ⅷ /usr/bin/ld: cannot find crt1.o: No such file or directory就这一个错误,导致无法编译出可执行文件。
GCC当前的体系结构是64位的,但是需要32位的支持文件,所以需要安装GCC-multilib。
终端输入命令如下:sudoaptinstallgcc-multilib。
程序编译成可执行的exe文件的方法:
1.编写一个简单的代码,如下图所示,然后编辑一个简单的output语句。
Ⅸ python编译C扩展报错
C和Python接口的地方应该没什么泄露。
关键是你现在是用C,那所有内存分配的地方都有可能泄露呗。 实在不行可以Jython,或者上面提到的Cython
Ⅹ C语言编译.o时提示undefined reference to `main'怎么办
一般是缺少相应的头文件,新建项目时 选择console application,不要选MFC的那种项目。
主函数应该写成int main(),你写成mian了。