<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="3.10.0">Jekyll</generator><link href="https://jinrhee.github.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://jinrhee.github.io/" rel="alternate" type="text/html" /><updated>2026-02-23T14:54:58-08:00</updated><id>https://jinrhee.github.io/feed.xml</id><title type="html">Jin Rhee</title><subtitle>Engineering student interested in robotics!</subtitle><author><name>Jin Rhee</name><email>jin.rhee@sjc.ox.ac.uk</email></author><entry><title type="html">Installing and using GCC on Mac Silicon</title><link href="https://jinrhee.github.io/posts/2024/09/install-gcc-on-mac-silicon/" rel="alternate" type="text/html" title="Installing and using GCC on Mac Silicon" /><published>2024-10-27T00:00:00-07:00</published><updated>2024-10-27T00:00:00-07:00</updated><id>https://jinrhee.github.io/posts/2024/09/post</id><content type="html" xml:base="https://jinrhee.github.io/posts/2024/09/install-gcc-on-mac-silicon/"><![CDATA[<hr />
<div class="language-cpp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">*</span><span class="p">[</span><span class="n">master</span><span class="p">][</span><span class="o">~/</span><span class="n">repositories</span><span class="o">/</span><span class="n">hepcpp</span><span class="o">/</span><span class="n">cpluspluscourse</span><span class="o">/</span><span class="n">exercises</span><span class="p">]</span><span class="err">$</span> <span class="n">type</span> <span class="n">gcc</span>
<span class="n">gcc</span> <span class="n">is</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">gcc</span>
<span class="o">*</span><span class="p">[</span><span class="n">master</span><span class="p">][</span><span class="o">~/</span><span class="n">repositories</span><span class="o">/</span><span class="n">hepcpp</span><span class="o">/</span><span class="n">cpluspluscourse</span><span class="o">/</span><span class="n">exercises</span><span class="p">]</span><span class="err">$</span> <span class="n">gcc</span> <span class="o">--</span><span class="n">version</span>
<span class="n">Apple</span> <span class="n">clang</span> <span class="n">version</span> <span class="mf">15.0.0</span> <span class="p">(</span><span class="n">clang</span><span class="o">-</span><span class="mf">1500.3.9.4</span><span class="p">)</span>
<span class="n">Target</span><span class="o">:</span> <span class="n">arm64</span><span class="o">-</span><span class="n">apple</span><span class="o">-</span><span class="n">darwin23</span><span class="mf">.5.0</span>
<span class="n">Thread</span> <span class="n">model</span><span class="o">:</span> <span class="n">posix</span>
<span class="n">InstalledDir</span><span class="o">:</span> <span class="o">/</span><span class="n">Library</span><span class="o">/</span><span class="n">Developer</span><span class="o">/</span><span class="n">CommandLineTools</span><span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span>
</code></pre></div></div>

<p>The <code class="language-plaintext highlighter-rouge">gcc</code> shipped with Mac Silicon is Apple clang → what?</p>

<p>I want to use the real gcc:</p>

<div class="language-cpp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">$</span> <span class="n">brew</span> <span class="n">install</span> <span class="n">gcc</span>
</code></pre></div></div>

<p>Brew <code class="language-plaintext highlighter-rouge">gcc</code> installed in <code class="language-plaintext highlighter-rouge">/opt/homebrew/bin/</code>:</p>

<div class="language-cpp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">$</span> <span class="n">ls</span> <span class="o">|</span> <span class="n">grep</span> <span class="n">gcc</span>
<span class="n">aarch64</span><span class="o">-</span><span class="n">apple</span><span class="o">-</span><span class="n">darwin23</span><span class="o">-</span><span class="n">gcc</span><span class="o">-</span><span class="mi">14</span>
<span class="n">aarch64</span><span class="o">-</span><span class="n">apple</span><span class="o">-</span><span class="n">darwin23</span><span class="o">-</span><span class="n">gcc</span><span class="o">-</span><span class="n">ar</span><span class="o">-</span><span class="mi">14</span>
<span class="n">aarch64</span><span class="o">-</span><span class="n">apple</span><span class="o">-</span><span class="n">darwin23</span><span class="o">-</span><span class="n">gcc</span><span class="o">-</span><span class="n">nm</span><span class="o">-</span><span class="mi">14</span>
<span class="n">aarch64</span><span class="o">-</span><span class="n">apple</span><span class="o">-</span><span class="n">darwin23</span><span class="o">-</span><span class="n">gcc</span><span class="o">-</span><span class="n">ranlib</span><span class="o">-</span><span class="mi">14</span>
<span class="n">gcc</span><span class="o">-</span><span class="mi">14</span>
<span class="n">gcc</span><span class="o">-</span><span class="n">ar</span><span class="o">-</span><span class="mi">14</span>
<span class="n">gcc</span><span class="o">-</span><span class="n">nm</span><span class="o">-</span><span class="mi">14</span>
<span class="n">gcc</span><span class="o">-</span><span class="n">ranlib</span><span class="o">-</span><span class="mi">14</span>
<span class="err">$</span> <span class="p">.</span><span class="o">/</span><span class="n">gcc</span><span class="o">-</span><span class="mi">14</span> <span class="o">--</span><span class="n">version</span>
<span class="n">gcc</span><span class="o">-</span><span class="mi">14</span> <span class="p">(</span><span class="n">Homebrew</span> <span class="n">GCC</span> <span class="mf">14.2.0</span><span class="n">_1</span><span class="p">)</span> <span class="mf">14.2.0</span>
<span class="n">Copyright</span> <span class="p">(</span><span class="n">C</span><span class="p">)</span> <span class="mi">2024</span> <span class="n">Free</span> <span class="n">Software</span> <span class="n">Foundation</span><span class="p">,</span> <span class="n">Inc</span><span class="p">.</span>
<span class="n">This</span> <span class="n">is</span> <span class="n">free</span> <span class="n">software</span><span class="p">;</span> <span class="n">see</span> <span class="n">the</span> <span class="n">source</span> <span class="k">for</span> <span class="n">copying</span> <span class="n">conditions</span><span class="p">.</span>  <span class="n">There</span> <span class="n">is</span> <span class="n">NO</span>
<span class="n">warranty</span><span class="p">;</span> <span class="n">not</span> <span class="n">even</span> <span class="k">for</span> <span class="n">MERCHANTABILITY</span> <span class="n">or</span> <span class="n">FITNESS</span> <span class="n">FOR</span> <span class="n">A</span> <span class="n">PARTICULAR</span> <span class="n">PURPOSE</span><span class="p">.</span>
</code></pre></div></div>

<p>Now to use the brew installed gcc, I simply need to add installation directory to <code class="language-plaintext highlighter-rouge">PATH</code>:</p>

<div class="language-cpp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="o">*</span><span class="p">[</span><span class="n">master</span><span class="p">][</span><span class="o">~/</span><span class="n">repositories</span><span class="o">/</span><span class="n">hepcpp</span><span class="o">/</span><span class="n">cpluspluscourse</span><span class="o">/</span><span class="n">exercises</span><span class="p">]</span><span class="err">$</span> <span class="n">echo</span> <span class="err">$</span><span class="n">PATH</span> <span class="o">|</span> <span class="n">grep</span> <span class="n">bin</span>
<span class="p">...</span> <span class="o">:/</span><span class="n">opt</span><span class="o">/</span><span class="n">homebrew</span><span class="o">/</span><span class="n">bin</span><span class="o">:/</span><span class="n">opt</span><span class="o">/</span><span class="n">homebrew</span><span class="o">/</span><span class="n">sbin</span><span class="o">:</span> <span class="p">...</span> <span class="o">:/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">:/</span><span class="n">bin</span><span class="o">:/</span><span class="n">usr</span><span class="o">/</span><span class="n">sbin</span> <span class="p">...</span>
</code></pre></div></div>

<p>Both the shipped and brew installed <code class="language-plaintext highlighter-rouge">gcc</code>s are on <code class="language-plaintext highlighter-rouge">PATH</code>…</p>

<div class="language-cpp highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="err">$</span> <span class="n">type</span> <span class="n">gcc</span>
<span class="n">gcc</span> <span class="n">is</span> <span class="o">/</span><span class="n">usr</span><span class="o">/</span><span class="n">bin</span><span class="o">/</span><span class="n">gcc</span>
</code></pre></div></div>

<p>aaaand the shipped gcc is still being used.</p>

<p>I can either:</p>

<ol>
  <li>alias; or</li>
  <li>create new gcc symlink → need to have PATH specify /usr/local/bin before /usr/bin</li>
</ol>

<p>References:
https://stackoverflow.com/questions/64992467/mac-clang-installation-seems-to-override-gcc-install</p>

<p>https://apple.stackexchange.com/questions/245891/installed-gcc-with-homebrew-now-how-to-use-that-gcc-instead-of-clang</p>]]></content><author><name>Jin Rhee</name><email>jin.rhee@sjc.ox.ac.uk</email></author><category term="Mac Silicon" /><category term="c++" /><summary type="html"><![CDATA[*[master][~/repositories/hepcpp/cpluspluscourse/exercises]$ type gcc gcc is /usr/bin/gcc *[master][~/repositories/hepcpp/cpluspluscourse/exercises]$ gcc --version Apple clang version 15.0.0 (clang-1500.3.9.4) Target: arm64-apple-darwin23.5.0 Thread model: posix InstalledDir: /Library/Developer/CommandLineTools/usr/bin]]></summary></entry><entry><title type="html">Use LLVM/Clang as CMake compiler</title><link href="https://jinrhee.github.io/posts/2024/09/use-clang-as-cmake-compiler/" rel="alternate" type="text/html" title="Use LLVM/Clang as CMake compiler" /><published>2024-09-30T00:00:00-07:00</published><updated>2024-09-30T00:00:00-07:00</updated><id>https://jinrhee.github.io/posts/2024/09/blog-post</id><content type="html" xml:base="https://jinrhee.github.io/posts/2024/09/use-clang-as-cmake-compiler/"><![CDATA[<h1 id="switch-to-llvmclang-compiler-for-cmake-ubuntu-2204-aarch64-on-apple-silicon-via-multipass">Switch to LLVM/Clang compiler for CMake (Ubuntu 22.04 aarch64 on Apple Silicon via Multipass)</h1>
<p>A package I work with compiles fine on Linux AMD, but crashes in a firey hell on my Mac.</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>find_package<span class="o">(</span>OpenMP<span class="o">)</span>
<span class="k">if</span> <span class="o">(</span>OPENMP_FOUND
    <span class="nb">set</span> <span class="o">(</span>CMAKE_C_FLAGS <span class="s2">"</span><span class="k">${</span><span class="nv">CMAKE_C_FLAGS</span><span class="k">}</span><span class="s2"> </span><span class="k">${</span><span class="nv">OpenMP_C_FLAGS</span><span class="k">}</span><span class="s2">"</span><span class="o">)</span>
    <span class="nb">set</span> <span class="o">(</span>CMAKE_CXX_FLAGS <span class="s2">"</span><span class="k">${</span><span class="nv">CMAKE_CXX_FLAGS</span><span class="k">}</span><span class="s2"> </span><span class="k">${</span><span class="nv">OpenMP_CXX_FLAGS</span><span class="k">}</span><span class="s2">"</span><span class="o">)</span>
endif<span class="o">()</span>
</code></pre></div></div>
<p>Results in:</p>

<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code>CMake Error at CMakeLists.txt:161 <span class="o">(</span>add_executable<span class="o">)</span>:
  Target <span class="s2">"s_graphs_prefiltering_node"</span> links to target <span class="s2">"OpenMP::OpenMP_CXX"</span>
  but the target was not found.  Perhaps a find_package<span class="o">()</span> call is missing <span class="k">for
  </span>an IMPORTED target, or an ALIAS target is missing?
</code></pre></div></div>
<p>Check libomp-dev is installed:</p>
<div class="language-bash highlighter-rouge"><div class="highlight"><pre class="highlight"><code><span class="nv">$ </span>apt show libomp-dev
Package: libomp-dev
Version: 1:14.0-55~exp2
Priority: extra
Section: universe/libdevel
Source: llvm-defaults <span class="o">(</span>0.55~exp2<span class="o">)</span>
Origin: Ubuntu
Maintainer: Ubuntu Developers &lt;ubuntu-devel-discuss@lists.ubuntu.com&gt;
Original-Maintainer: LLVM Packaging Team &lt;pkg-llvm-team@lists.alioth.debian.org&gt;
Bugs: https://bugs.launchpad.net/ubuntu/+filebug
Installed-Size: 16.4 kB
Depends: libomp-14-dev <span class="o">(&gt;=</span> 14~<span class="o">)</span>
Download-Size: 3074 B
APT-Manual-Installed: <span class="nb">yes
</span>APT-Sources: http://ports.ubuntu.com/ubuntu-ports jammy/universe arm64 Packages
Description: LLVM OpenMP runtime - dev package
 The runtime is the part of the OpenMP implementation that your code is
 linked against, and that manages the multiple threads <span class="k">in </span>an OpenMP program
 <span class="k">while </span>it is executing.
 This is a dependency package providing the default LLVM OpenMP dev
 package.
</code></pre></div></div>

<h2 id="this-was-solved-by-using-llvmclang-as-the-compiler-for-cmake-rather-than-gcc">This was solved by using LLVM/Clang as the compiler for CMake rather than gcc:</h2>]]></content><author><name>Jin Rhee</name><email>jin.rhee@sjc.ox.ac.uk</email></author><category term="cool posts" /><category term="category1" /><category term="category2" /><summary type="html"><![CDATA[Switch to LLVM/Clang compiler for CMake (Ubuntu 22.04 aarch64 on Apple Silicon via Multipass) A package I work with compiles fine on Linux AMD, but crashes in a firey hell on my Mac. find_package(OpenMP) if (OPENMP_FOUND set (CMAKE_C_FLAGS "${CMAKE_C_FLAGS} ${OpenMP_C_FLAGS}") set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}") endif() Results in:]]></summary></entry><entry><title type="html">Use NoMachine to access VM</title><link href="https://jinrhee.github.io/posts/2024/09/use-nomachine-to-access-vm/" rel="alternate" type="text/html" title="Use NoMachine to access VM" /><published>2024-09-30T00:00:00-07:00</published><updated>2024-09-30T00:00:00-07:00</updated><id>https://jinrhee.github.io/posts/2024/09/post</id><content type="html" xml:base="https://jinrhee.github.io/posts/2024/09/use-nomachine-to-access-vm/"><![CDATA[<p>A GUI is often needed when using VMs and ssh’ing into shell is insufficient. Windows Remote Desktop offers a ssh-based remote access method, but has a really slow GUI. I’ve found NoMachine to have a much faster response (which saves a lot of headaches).</p>

<p>You need NoMachine on both the client and host machines:
<a href="https://www.nomachine.com/getting-started-with-nomachine">Install NoMachine</a></p>

<p>Connecting to a machine over an internet connection has a few more steps, but simply accessing a VM on your host computer is really easy!</p>]]></content><author><name>Jin Rhee</name><email>jin.rhee@sjc.ox.ac.uk</email></author><category term="Ubuntu" /><summary type="html"><![CDATA[A GUI is often needed when using VMs and ssh’ing into shell is insufficient. Windows Remote Desktop offers a ssh-based remote access method, but has a really slow GUI. I’ve found NoMachine to have a much faster response (which saves a lot of headaches).]]></summary></entry></feed>