2017-03-26 4 views
0

私のディレクトリ内のすべてのファイルをオブジェクト* .o拡張子でリンクしようとしています。 は、私が使用してみました:gcc形式のオブジェクトファイルのリスト

for i in $(find . -name "*.o" -type f); 
    do 
     echo $i >> myFiles 
    done 

その後、私は必要があります。

gcc -o myFile <myFiles 

gcc: fatal error: no input files

compilation terminated.

+1

離れてそれをすべて投げ1つのコマンドを使用してみてください: 'gccの-o myfileは$が(見つけ型F -name * .oの。)' –

答えて

0

私はあなたのアプローチでは、いくつかの問題を参照してください。

findshould not be used in a loopではなく、-fprint <file>と。だからあなたの場合には:あなたが考えるほど、それはコードのソースとして入力を使用して

find . -name "*.o" -type f -fprintf myfiles 

第二に、gcc標準入力にファイルをリダイレクトすることは、動作しません。see this question。あなたが代わりに欲しいのは引数のリストにオブジェクトのリストを拡大することです:

cat myfiles | xargs gcc -o myFile 

xargsはうまくそれをしません。しかし、@ n.m。述べたように、あなたはコマンド置換を一度にすべてを行うことができます:

gcc -o myfile $(find . -type f -name *.o -print0) 

私が提案する唯一の違いは、そのためではなく\nの発見の終わりに\0を置く見つける-print0を使用することです。

グッドラック

関連する問題