2010-02-25 78 views
0

我在編譯器中編譯我的程序。後來我運行並測試了不同環境下的程序。如果我使用-fprofile-arcs進行編譯,那麼程序會嘗試將文件寫入運行環境中不存在的文件夾中。有沒有解決這個問題的方法?如何更改可執行文件中的源代碼g ++

感謝

+0

這是不可能有兩臺機器相同的文件夾結構,有沒有共同的路徑:(。我試過了。 – nakiya 2010-02-25 08:32:50

回答

0

Nakiya,據this 「-fprofile弧 添加代碼,使程序流弧儀表。在執行過程中的程序記錄了多少次執行每個分支和呼叫以及多少次當編譯的程序退出時,它會將這些數據保存到每個源文件的名爲auxname.gcda的文件中,這些數據可用於配置文件導向優化(-fbranch-probabilities)或測試覆蓋率分析( - 每一個目標文件的auxname都是從輸出文件的名字中產生的,如果明確指定的話,它不是最終的可執行文件,否則它就是源文件的基本名稱。 ffix被刪除(例如foo.gcda輸入文件DIR/foo.c的,或DIR/foo.gcda指定爲-o DIR/foo.o的)輸出文件。」

+0

問題是.gcda文件都試圖將自己寫入到文件夾中的目標文件這個目錄在我的跑步機器中不存在,這就是問題 – nakiya 2010-02-25 09:30:47

1

繼RP的答案,我想this將是有益的。

如果目標文件/user/build/foo.o 與-fprofile弧建成, 最終的可執行文件將嘗試創建 數據文件/user/build/foo.gcda 上運行時目標系統 如果相應的 目錄不存在,並且它是 無法創建它將會失敗,可能是 例如通過將 環境設置爲 GCOV_PREFIX=/target/run' and GCOV_PREFIX_STRIP = 1'來克服。這樣的設置 將命名數據文件 /target/run/build/foo.gcda。

+0

立即嘗試 – nakiya 2010-02-25 10:18:30

相關問題