"undefined reference to ..." означает, что символ не найден во время линковки.
Нужно добавить -lm в команду линковки, потому что реализация sin находится в библиотеке libm. О чём, кстати, говорит
man sin.
Первый вариант работает, потому что значение sin(50) можно вычислить во время компиляции, что компилятор и делает.