記一次makefile的經歷

2021-10-01 16:49:53 字數 1750 閱讀 7001

哎呀,剛接觸makefile 和 linux 不久,搞得很多c++的東西都拋諸腦後了,真的慚愧喲。

這是我的檔案目錄(實際開發最好不要這樣命名檔案,否則到之後自己都不知道這些檔案都是幹嘛的)

一開始的源**:

.1 標頭檔案 

#include using std::cout;

using std::endl;

extern int value;

void setvalue(int tmp);

.1 原始檔

#include "1.h"

void setvalue(int tmp)

.2 標頭檔案

#include using std::cout;

using std::endl;

extern int value;

void getvalue();

.2 原始檔

#include "2.h"

void getvalue()

.main 檔案

#include #include "1.h"

#include "2.h"

int value;

int main(int argc, char** ar**)

makefile 檔案

src = $(wildcard ./*.c)

obj = $(patsubst %.c, %.o, $(src))

all: main.out

$(obj): $(src)

g++ -c $(src)

main.out: $(obj)

g++ $^ -o $@

這樣編譯過後,直接出現了函式重定義的情況,然後看了下是在鏈結的時候出現的問題,怎麼回事呢?再仔細看看**,main裡面包含了1和2的檔案, 鏈結的時候,又把1和2的檔案鏈結了一遍,所以才會出現這個問題,怎麼解決呢?如果放在windows下面,很快就會反應過來,但是放在linux下面,就是半天反應不過來,確實還是欠些火候,也是技術實力提公升的乙個瓶頸所在吧!下面放**

1的標頭檔案

#ifndef __1_h__

#define __1_h__

#include using std::cout;

using std::endl;

extern int value;

void setvalue(int tmp);

#endif

2的標頭檔案

#ifndef __2_h__

#define __2_h__

#include using std::cout;

using std::endl;

extern int value;

void getvalue();

#endif

其餘的檔案不用改,這些是我把**放在qt(mingw)下面跑了一遍就反應過來了。共勉吧。

就到這裡了,快過年了,提前祝大家新年快樂,心想事成,祝大家在新的一年裡能夠遇到心目中的ta。

記一次面試經歷

今早七點半的巴士從中山趕到廣州面試php開發助理,以前面的都是十來人 幾十人的小公司,不少還是培訓公司,坑的一逼!這次的公司不錯,比較正規,好歹上百人了,只是筆試題做得一般,題目有的雖有學過,但忘了,好吧!這就是沒準備充分的緣故!下面羅列下我還記得的題目 有些漏了就沒辦法了 之後hr面試聊了下,雖然...

記一次重構經歷

起因 最近因為公司內部對各個業務線的使用者業務進行統一剝離,形成使用者中心,所有使用者相關的業務和資料都落地到使用者中心,各個業務線以rpc的的形式依賴使用者中心的服務。結果 因為我的疏忽,造成了兩個bug沒有被測試出來。總結改進 這兩個bug的產生的原因都是因為我錯誤地估計了回歸測試的範圍,我的想...

記一次打包aar經歷

之前維護的乙個直播專案,公司決定抽取其中的直播房間功能給公司的其他專案。因為考慮到使用的功能中包含ui 我們決定使用aar 的方式 jar包中只包含class檔案和清單檔案 專案中library庫在rebuild的完成後,會在build output aar目錄下生成對應的aar檔案。所以首先要做的...