下記みたいなエラーが出たときは、他のファイルと同一の関数を宣言していないか、確認すべし。
ld: 1 duplicate symbol for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
今回はint main(int argc, const char * argv[]){ XXX } という宣言がmain.mとmain.cの両方で宣言していたためエラーが出た。
今回はmain.cしか使わなそうだったので、main.mのこの宣言をコメントアウトして解決。
C言語ではコンパイラが自動的に他のファイルも読み込んでしまうようだ。
下記のサイトが参考になる。