gcc如何设置程序的入口函数
2015-05-17 01:03
405 查看
本小白本想参加华为的德州编程比赛,结果赛程过半,调试环境还没配好,要学的还有太多太多,书归正传。。
这次遇到的问题起源于比赛题目的一个要求“牌手程序必须以game为入口”。
在VS下编程时,可以使用IDE很方便地修改入口函数名。但是这个比赛要求程序要在Linux环境下运行,而且大赛方提供的虚拟机是没有图形界面的。小白第一次面对命令行操作时那种恐慌,相信大家初出茅庐时都有体会。又扯远了。
在网上查了一下gcc如何设置入口函数,找到了这么一条指令 gcc -nostartfiles -e myentry source.c -o source
-nostartfiles :目的是不让编译器把会引用main的代码编入我们的程序(具体细节没有看,网上有大神的讲解)
-e:设置程序的入口函数
我遇到的问题:我的源码名称是game.cpp,需要设置的入口函数是game,所以就用了如下的编译命令 gcc -nostartfiles -e game game.cpp -o game,然后问题就出现了
warning:game这个函数找不到。
什么原因呢?我觉得应该是c++编译器在编译时对game做了名称的变换,所以在设置入口时就找不到game了。
解决方法:在game前加上extern "C",然后再用执行gcc -nostartfiles -e game game.cpp -o game,就没有问题了。
这一个问题搞了一天。。之前虽然看过C和C++的函数命名的区别,但是没有这么深刻的印象,这次深深地记住了。。
这次遇到的问题起源于比赛题目的一个要求“牌手程序必须以game为入口”。
在VS下编程时,可以使用IDE很方便地修改入口函数名。但是这个比赛要求程序要在Linux环境下运行,而且大赛方提供的虚拟机是没有图形界面的。小白第一次面对命令行操作时那种恐慌,相信大家初出茅庐时都有体会。又扯远了。
在网上查了一下gcc如何设置入口函数,找到了这么一条指令 gcc -nostartfiles -e myentry source.c -o source
-nostartfiles :目的是不让编译器把会引用main的代码编入我们的程序(具体细节没有看,网上有大神的讲解)
-e:设置程序的入口函数
我遇到的问题:我的源码名称是game.cpp,需要设置的入口函数是game,所以就用了如下的编译命令 gcc -nostartfiles -e game game.cpp -o game,然后问题就出现了
warning:game这个函数找不到。
什么原因呢?我觉得应该是c++编译器在编译时对game做了名称的变换,所以在设置入口时就找不到game了。
解决方法:在game前加上extern "C",然后再用执行gcc -nostartfiles -e game game.cpp -o game,就没有问题了。
这一个问题搞了一天。。之前虽然看过C和C++的函数命名的区别,但是没有这么深刻的印象,这次深深地记住了。。
相关文章推荐
- 裸机程序常识1 _start程序入口标号 -Ttext链接地址作用,如何使用uboot中的函数
- DirectX 3D_基础之HLSL(高级着色语言) HLSL着色器程序的编制 HSLS变量 HLSL入口函数 HLSL程序编译 变量常量类型 设置方法 前缀 关键字 类型 语句 类型转换
- 如何将其他函数设置为程序入口点
- 如何为WPF添加Main()函数 程序入口点的修改
- 利用ATL创建com组件和如何在程序中使用组件的接口函数和设置接口的属性
- 如何更改程序入口函数
- 如何设置程序与文件关联并且双击关联文件时获取文件的路径呢?(转)
- GCC——C程序是如何编译成的
- linux 入口函数和程序初始化
- 程序入口函数和glibc及C++全局构造和析构
- 运行程序选择总是重启tomcat后,如何修改设置。
- MPLAB程序中如何设置配置字
- Win8如何设置或取消恢复屏幕保护程序不提示输入登录密码
- VS2005 设置DLL程序无入口点
- win7如何设置一个程序的快捷键(比如截图)
- GCC设置函数属性为constructor和destructor
- 在Linux下如何使用GCC编译程序、简单生成静态库及动态库
- 如何设置 C# 程序配置
- C# 定时器事件(设置时间间隔,间歇性执行某一函数,控制台程序)
- 如何定位Release 版本中程序崩溃的位置 ---利用map文件 拦截windows崩溃函数