免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1558 | 回复: 6
打印 上一主题 下一主题

use gcc in shell script [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-06-27 05:35 |只看该作者 |倒序浏览
hi, there:

It may seem irrelevant, but does anyone know or used gcc compiler in a shell script? I need to use gcc to compile a c file and  change a variable in the file by setting a parameter of gcc (-D   ). If this works, gcc will generate an executable file with the name of that parameter (variable). That is it. I hope I made myself clear enough.

Thanks in advance!

论坛徽章:
0
2 [报告]
发表于 2003-06-27 07:51 |只看该作者

use gcc in shell script

...

...

VAR="what_ever"     

gcc -D $VAR -o $VAR

...

论坛徽章:
0
3 [报告]
发表于 2003-06-27 10:46 |只看该作者

use gcc in shell script

Hi, Hong Xiu:

Is it that simple? I am really too green a hand. I tried even more complicated ways, but didn't work. Let me see if yours works...

Thanks in advance!

论坛徽章:
0
4 [报告]
发表于 2003-06-27 21:59 |只看该作者

use gcc in shell script

Hi, Red Sleeve or other high hands;

I still have the problem of changing the value of  the variable in the c file. Say, the file is soso.c, the variable is cHANGEABLE,  I want the value of cHANGEABE to be xingle (its default value is "quesheng", then I created a script called changeit, in changeit:

gcc -D cHANGEABLE=$1 -o $1 soso.c

then I run the script:

changeit xingle

but the executable xingle still not OK.

PS: I also added the following lines in soso.c:

#ifndef cHANGEABLE
define cHANGEABLE quesheng
#endif

Any problem you figure out?

Thanks!

论坛徽章:
0
5 [报告]
发表于 2003-06-28 00:19 |只看该作者

use gcc in shell script

原帖由 "kfcn" 发表:
Hi, Red Sleeve or other high hands;

I still have the problem of changing the value of  the variable in the c file. Say, the file is soso.c, the variable is cHANGEABLE,  I want the value of cHANGEAB..........
   


okay, i understand what you want.

there are probably some syntax errors or undefined variables in your C code.

1. there should be a hash before define, i.e.  #define
2. since quesheng is a string, it should be quoted  

try this one, assume it's called soso.c

  1. #include <stdio.h>

  2. #ifndef cHANGEABLE
  3. #define cHANGEABLE "quesheng"
  4. #endif

  5. int main()
  6. {
  7.     char* var = cHANGEABLE ;
  8.     printf("cHANGEABLE is: %s\n", var);
  9.     return(0);
  10. }
复制代码


then your script 'changeit' may look like this,

  1. if [ x"$1" = x ]; then
  2.     var="quesheng"
  3. else
  4.     var=$1
  5. fi
  6. echo "the executable file is: $var"
  7. gcc -DcHANGEABLE=\"$var\" -o $var soso.c
复制代码


tested on Solaris and IRIX,

sleeve@sievert:~[503]$ ./changeit xingle
the executable file is: xingle
sleeve@sievert:~[504]$ ls -l xingle
-rwx------   1 sleeve    other       5875 Jun 27 18:06 xingle
sleeve@sievert:~[505]$ ./xingle
cHANGEABLE is: xingle
sleeve@sievert:~[506]$ ./changeit
the executable file is: quesheng
sleeve@sievert:~[507]$ ./quesheng
cHANGEABLE is: quesheng
sleeve@sievert:~[508]$

hope it helps.

论坛徽章:
0
6 [报告]
发表于 2003-06-28 11:58 |只看该作者

use gcc in shell script

……

论坛徽章:
0
7 [报告]
发表于 2003-06-29 00:12 |只看该作者

use gcc in shell script

why not use make instead of a shell script

so you can define one target as 'change', and another as 'withoutchange', and a 'all' to compile both.
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP