It's not clear from your code snippet whether your userClicked() function or your LibIdentifier.receiveLink() function require any variables to run but I assume that they do.
The mistake you are making is how client-side and server-side work together. Server side has no access to variables that are client side unless they are entered as parameters in the google.scrip.run call. Similarly client-side has no access to server-side variables unless received in the callback function. The code snippet below is the best I can do without knowing what your server-side code looks like.
<script>
function handleButtonClick() { //This will run when you click the button
var userInput = document.getElementById("myInput").value;
alert(userInput)
google.script.run.withSuccessHander(onSuccess).LibIdentifier.receiveLink() //Make sure to put any variables that the receiveLink() function needs to receive server side inside the parentheses and then receive them as variables inside the library function
}
function onSuccess(uwow) { //This function will run if the LibIdentifier.receiveLink() completes successfully. The return value from that function will be what the variable within the onSuccess function is. Return an Object if you need multiple variables
var div = document.getElementById('output');
console.log("onSuccess =" + uwow)
}
</script>
Again, I don't know the what LibIdentifier.receiveLink() and userClicked() do as they appear to be server functions.
In your code you try to set a variable to the return value of a server side function but this is not how Apps Script works. google.script.run should usually be the last line of code in your function and then the script continues in the successHandler
I get that async is confusing when starting out. It took me a while to get the hang of it. If you could actually share your server side scripts and an idea of what your project is actually supposed to achieve I might be able to help more.