Chinaunix

标题: use gcc in shell script [打印本页]

作者: kfcn    时间: 2003-06-27 05:35
标题: use gcc in shell script
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!
作者: 红袖添香    时间: 2003-06-27 07:51
标题: use gcc in shell script
...

...

VAR="what_ever"     

gcc -D $VAR -o $VAR

...
作者: kfcn    时间: 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!
作者: kfcn    时间: 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!
作者: 红袖添香    时间: 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.
作者: superdoctor    时间: 2003-06-28 11:58
标题: use gcc in shell script
……
作者: etherman    时间: 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.




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2