我有这个shell脚本

#!/bin/csh
@ x = 1
while ($x <= 2)
nohup ./prog1 && ./prog2 &
@ x ++
end

我想依次运行两次通过编译文件生成的prog1和prog2。我该怎么做?脚本正确吗?

如果我做
chmod u+x test.csh
./test.csh

我得到这个错误
./prog1: /usr/lib64/libstdc++.so.6: version `GLIBCXX_3.4.11' not found (required by ./prog1)

这是我的makefile
GSLFLAGS := `pkg-config --cflags gsl`
LIBGSL := `pkg-config --libs gsl`
CFLAGS = -O3 -fopenmp
LIBOMP = -lgomp

dist.o:dist.cxx
    g++ -Wall -c dist.cxx

prog1.o:prog1.cxx
    g++ -Wall -c prog1.cxx  $< ${GSLFLAGS} ${CFLAGS}

prog1:prog1.o dist.o
    g++ ${CFLAGS} -o  $@ $^ ${LIBGSL}

prog2.o:prog2.cxx
    g++ -Wall -c prog2.cxx  $< ${GSLFLAGS} ${CFLAGS}

prog2:prog2.o dist.o
    g++ ${CFLAGS} -o  $@ $^ ${LIBGSL}

最佳答案

与从命令行运行时相比,在csh中似乎为标准C++库的搜索路径设置了不同。

Linking the standard libraries statically应该使库搜索路径不相关:如下更改您的makefile:

CFLAGS = -O3 -fopenmp -static-libgcc -static-libstdc++

关于c++ - 从Shell脚本运行C脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21484526/

10-12 16:13